有人可以帮我理解下面的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');
});
});
答案 0 :(得分:2)
$
是函数的名称。你在其中传递一个匿名函数作为它的第一个参数。如果我们要减少它的复杂性,它将如下所示:
var $ = function( arg1 ){
/* Internals */
};
如果我们现在打电话给它,它将如下所示:
$("foo");
在此代码中,"foo"
是我们的第一个参数。现在假设我们用另一个函数替换了"foo"
:
var callback = function(){
alert("Hello World");
};
如果我们将其传递到我们的$
函数中,它将如下所示:
$( callback );
但我们真的不需要使用命名函数,我们可以使用匿名函数:
$(function(){
alert("Hello World");
});
开始看到相似之处?在$
的生命中的某个时刻,它将决定它将执行我们传入的函数。在执行它之前,我们的函数什么都不做。
现在我们在这里讨论jQuery,只要DOM准备就绪,jQuery就会执行该函数。所以我们传递的代码应该在DOM准备就绪时执行。
答案 1 :(得分:0)
$不是js构造函数..它是jquery(js library)函数。变量将在声明中填充。