如何在jquery中运行一个函数

Cor*_*rin 63 jquery function

我是一个编程新手,我无法弄清楚如何在JQuery中存储一个函数并在多个地方运行它.

我有:

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

  });

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

});
Run Code Online (Sandbox Code Playgroud)

现在2"// Doo somethings"是相同的,我不想再次编写相同的代码.

如果我把:

$(function () {

  function doosomething ()
  {
    //Doo something
  }

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

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

});
Run Code Online (Sandbox Code Playgroud)

这将在页面加载时运行该函数,而不是仅在它单击时运行.

我该怎么做呢?

谢谢!

And*_*ore 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);

});
Run Code Online (Sandbox Code Playgroud)

基本上,您在与使用它的范围相同的范围内声明您的功能(JavaScript使用Closures来确定范围).

现在,由于JavaScript中的函数表现得像任何其他对象一样,您可以简单地指定doosomething为使用单击时调用的函数.click(doosomething);

在使用doosomething()(doosomething()引用函数但不调用它)或其他函数调用(在本例中为click处理程序)之前,您的函数将不会执行.

  • $是'jQuery'的简写.所以每当你在某处看到'$'时,你必须认为这是jQuery函数,$(function(){}); 将使它不会指定任何特定事件:代码将在文档准备好时执行.$(函数(){}); === jQuery(document).ready(function(){}); 或$(document).ready(function(){}); (11认同)
  • 我是jQuery的新手,所以你能解释第一行`$(function(){`?这行的目的是什么,请?tyvm (2认同)

小智 28

我会这样做:

(function($) {
jQuery.fn.doSomething = function() {
   return this.each(function() {
      var $this = $(this);

      $this.click(function(event) {
         event.preventDefault();
         // Your function goes here
      });
   });
};
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

然后在文档准备好了你可以做这样的事情:

$(document).ready(function() {
   $('#div1').doSomething();
   $('#div2').doSomething();
});
Run Code Online (Sandbox Code Playgroud)

  • 在"准备好文件"之外创建功能实际上是否提供了任何好处? (3认同)

Vin*_*nie 18

function doosomething ()
{
  //Doo something
}


$(function () {


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

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

});
Run Code Online (Sandbox Code Playgroud)


小智 11

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

$(function () {
  $("div.class, div.secondclass").click(function(){
    //Doo something
  });
});
Run Code Online (Sandbox Code Playgroud)


Joe*_*iel 5

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

jQuery.fn.doSomething = function () {
   this.css("position","absolute");
   return this;
}
Run Code Online (Sandbox Code Playgroud)

和它的方式:

$("#someRandomDiv").doSomething();
Run Code Online (Sandbox Code Playgroud)