在创建我自己的jQuery方法时,为什么会这样:
(function($){
$.fn.test = function() {
return this.each(function(){
$(this).html("Hi there");
});
}
})(jQuery);
$(document).ready(function(){
$("body").click(function(){
$(this).test().css("color", "orange");
});
});
但这不是吗?
(function($){
$.fn.test = function() {
return this.each(function(){
$(this).html("Hi there");
});
}
$("body").click(function(){
$(this).test().css("color", "orange");
});
})(jQuery);
我尝试过用jQuery
替换$
,但仍然不起作用。它似乎只能在一个单独的doc.ready函数中工作,有人能解释为什么吗?
谢谢!
发布于 2015-04-03 09:55:32
您的第二个代码片段没有按预期工作,因为
(function($) {...})(jQuery)
在文档准备好之前运行。
通过包装您的
$('body').click(function () {...})
在一个
$(document).ready(function() {...})
您是在告诉jQuery运行
$('body').click(function () {...})
在页面加载之后。
你(可能)想要做的事情:
$(document).ready(function() {
$.fn.test = function() {
return this.each(function() {
$(this).html("Hi there");
});
}
$("body").click(function() {
$(this).test().css("color", "orange");
});
});
这将同时运行
$.fn.test = function() {...}
和
$("body").click(function() {...}
在文档准备好之后(基本上就是页面完全加载时),就有点不同了,但在这里阐述这一点并不是很有建设性。
https://stackoverflow.com/questions/29425154
复制相似问题