3

可能重复:
$(document).ready 速记

有人可以帮我理解下面的JS代码吗,请:

$(function(){  <-- Is this a JS constructor? Why we need this?
    var someVariable = $(".classa").on('click', function() { <-- At what point in time does someVariable get populated?
        var $this = $(this);
            id = $this.attr('id');
         someVariable.removeClass('selected'); 
    });

    var someVariable2 = $(".classb").on('click', function() {
        var $this = $(this);
            id = $this.attr('id');
         someVariable2.removeClass('selected');
    });
});
4

2 回答 2

2

$是函数的名称。您将在其中传递一个匿名函数作为其第一个参数。如果我们要降低它的复杂性,它看起来像这样:

var $ = function( arg1 ){
  /* Internals */
};

如果我们现在调用它,它将如下所示:

$("foo");

在这段代码中,"foo"是我们的第一个参数。现在假设我们"foo"用另一个函数替换了我们的:

var callback = function(){
  alert("Hello World");
};

如果我们将它传递给我们的$函数,它将如下所示:

$( callback );

但是我们真的不需要使用命名函数,我们可以使用匿名函数:

$(function(){
  alert("Hello World");
});

开始看到相似之处?在生命周期的某个时刻$,它会决定执行我们传入的函数。在它执行之前,我们的函数什么都不做。

现在我们在这里讨论 jQuery,只要 DOM 准备好,jQuery 就会执行该函数。所以我们传递的代码应该在 DOM 准备好时执行。

于 2012-05-21T22:46:28.810 回答
0

$ 不是 js 构造函数。它是jquery(js library)函数。该变量在声明时填充。

于 2012-05-21T22:48:38.170 回答