我正在构建chrome扩展,并在我的内容脚本中包含以下代码。 pep是一个可以拖拽事物的库。有趣的是,我的代码适用于案例#2而不是#1。为什么会这样?
似乎第二种情况是使用匿名函数包装函数调用(虽然我不确定为什么之前需要jquery)
//1
$('#square').pep();
//2
$(function($) {
$('#square').pep();
});
答案 0 :(得分:6)
第二个案例是jQuery的“on document ready”的简写。
相当于:
$(document).ready(function() {
$('#square').pep();
});
答案 1 :(得分:1)
在第二种情况下,您使用$(document).ready()
的简写。这样,javascript在执行之前等待加载所有DOM元素。库需要加载所有元素才能工作。
答案 2 :(得分:1)
传递给jQuery constructor $(function() {})
的函数是$(document).ready(function() {});
函数参数不必是匿名的,事实上,总是命名像$(function myDomReady() {})
这样的函数是一个好习惯。