如何在jquery中运行一个函数

我是一个编程新手,我不知道如何在JQuery中存储一个函数,并在多个地方运行。

我有:

$(function () { $("div.class").click(function(){ //Doo something }); $("div.secondclass").click(function(){ //Doo something }); }); 

现在2“// Doo somethings”是一样的,我不想再写相同的代码。

如果我把:

 $(function () { function doosomething () { //Doo something } $("div.class").click(doosomething); $("div.secondclass").click(doosomething); }); 

这将运行页面加载function,而不是只有当它点击。

我如何正确地做到这一点?

谢谢!

以下应该很好地工作。

 $(function() { // Way 1 function doosomething() { //Doo something } // Way 2, equivalent to Way 1 var doosomething = function() { // Doo something } $("div.class").click(doosomething); $("div.secondclass").click(doosomething); }); 

基本上,你正在声明你的函数在你正在使用它的范围(JavaScript使用闭包来确定范围)。

现在,因为JavaScript中的函数的行为与其他任何对象一样,您可以简单地通过使用.click(doosomething);指定doosomething作为调用点击的函数.click(doosomething);

你的函数在你使用doosomething()调用它之前不会执行( doosomething没有()指的是函数,但不调用它)或者另一个函数调用(在这种情况下是click处理程序)。

我会这样做:

 (function($) { jQuery.fn.doSomething = function() { return this.each(function() { var $this = $(this); $this.click(function(event) { event.preventDefault(); // Your function goes here }); }); }; })(jQuery); 

然后在文档准备好你可以做这样的东西:

 $(document).ready(function() { $('#div1').doSomething(); $('#div2').doSomething(); }); 
 function doosomething () { //Doo something } $(function () { $("div.class").click(doosomething); $("div.secondclass").click(doosomething); }); 

另外(我会说最好),你可以这样做:

 $(function () { $("div.class, div.secondclass").click(function(){ //Doo something }); }); 

你也可以做到这一点 – 因为你想要一个函数在任何地方都可以使用,所以你可以直接调用JqueryObject.function()。 例如,如果你想创build自己的函数来操作元素上的任何CSS:

 jQuery.fn.doSomething = function () { this.css("position","absolute"); return this; } 

而这种方式称之为:

 $("#someRandomDiv").doSomething(); 

这是最混乱的解决scheme吗? 我不相信jQuery的想法是创build这样的代码。还有一个假设,我们不想冒泡事件,这可能是错误的。

$(function(){} doosomething()之外的简单移动doosomething()将使其具有全局范围,并使代码简单易读。