Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在jquery中运行函数_Jquery_Function - Fatal编程技术网

如何在jquery中运行函数

如何在jquery中运行函数,jquery,function,Jquery,Function,我是一个编程新手,我不知道如何在JQuery中存储函数并在多个地方运行 我有: $(function () { $("div.class").click(function(){ //Doo something }); $("div.secondclass").click(function(){ //Doo something }); }); 现在2个“//Doo somethings”都是一样的,我不想再写同样的代码了 如果我说: $(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);

});
这将在页面加载时运行函数,而不是仅在单击时运行

如何正确地执行此操作


谢谢

以下内容应该可以很好地发挥作用

$(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(doosthing)将
doosthing
指定为调用click的函数

除非您使用
doosome()
doosome
而不使用
()
引用函数,但不调用它)或其他函数调用它(在本例中,使用
单击处理程序)。

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

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

我会这样做:

(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 () {
  $("div.class, div.secondclass").click(function(){
    //Doo something
  });
});
$(document).ready(function() {
   $('#div1').doSomething();
   $('#div2').doSomething();
});

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


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

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

jQuery.fn.doSomething = function () {
   this.css("position","absolute");
   return this;
}
以及如何称呼它:

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

谢谢你的方法2,我必须尝试一下。但是这个函数确实是在页面加载时运行的,因为在jquery$(function()中是文档加载的缩写。所以至少方法1是不起作用的。我对jquery非常陌生,所以你能解释一下第一行
$(function()){
?请问这一行的用途是什么?tyvm$是“jQuery”的简写。因此,每当您在某处看到“$”时,您必须认为这是jQuery函数,$(function(){});它将使它不会指定特定事件:代码将在文档准备就绪时执行。$(function(){};==jQuery(document).ready(function(){});或$(document.ready(function(){});在“document ready”之外创建函数实际上有什么好处吗?@Nuktu是的,用于插件开发。如果你在函数参数中使用$,那么为什么还要麻烦调用它jQuery而不是再次使用$呢?它通过jQuery,这样即使你有其他库分配给$,这个版本也可以工作。函数中的形式参数及其用法具有局部作用域,因此不会发生错误当f.e div.secondclass还不存在时,为什么在parens中有$beforeNice而不是f.e div.secondclass…不是!但是如果它只在JQuery函数中使用,那么最好不要污染全局范围并将其保留在它所属的位置。