如何在jquery中运行一个函数

时间:2009-07-28 03:41:36

标签: jquery function

我是一个编程新手,我无法弄清楚如何在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);

});

这将在页面加载时运行该功能,而不是仅在单击时运行。

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

谢谢!

7 个答案:

答案 0 :(得分:108)

以下内容应该很有效。

$(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使用Closures来确定范围。)

现在,由于JavaScript中的函数与任何其他对象的行为相同,因此您可以使用doosomething

简单地将.click(doosomething);指定为调用点击的函数

在使用doosomething()doosomething没有()引用函数但没有调用它)或其他函数调用(在此函数中)调用它之前,您的函数将不会执行case,click处理程序。)

答案 1 :(得分:28)

我会这样做:

(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();
});

答案 2 :(得分:18)

function doosomething ()
{
  //Doo something
}


$(function () {


  $("div.class").click(doosomething);

  $("div.secondclass").click(doosomething);

});

答案 3 :(得分:11)

或者(我最好说),你可以这样做:

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

答案 4 :(得分:5)

您也可以这样做 - 因为您希望在任何地方使用一个函数,您可以通过直接调用JqueryObject.function()来实现。例如,如果要创建自己的函数来操作元素上的任何CSS:

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

打电话的方式:

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

答案 5 :(得分:2)

这是最混淆的解决方案吗?我不相信jQuery的想法就是创建这样的代码。还有一种假设,即我们不想冒泡事件,这可能是错误的。

doosomething()之外简单移动$(function(){}将使其具有全局范围并保持代码简单/可读。

答案 6 :(得分:0)

我在现代 JavaScript 中使用的简单方法:

$(
  $("div.class").click(() => {doosomething});
  $("div.secondclass").click(() => {doosomething});
);