我知道这个问题非常主观,但我确定我没有遵循这个标准 - 因为虽然风格和方法可能与开发不同,但仍有一些非常可靠的标准。
无论如何,在使用jQuery库的javascript中定义函数时,我通常会执行以下操作;
function funcName() {
$(document).ready(function() {
// Do stuff
});
}
为了在函数内部使用jQuery而尝试这样做对我来说没有用,所以为什么我使用上面的东西;
$(document).ready(function() {
function funcName() {
// Do stuff
}
});
对于在函数中使用jQuery的标准兼容/常用方式的任何评论/答案将非常感谢!
编辑:非常愚蠢的程度让我提出这个问题。自从我开始使用jQuery之前(在我真正了解开发之前),我总是将代码包含在$(document).ready(function{})
中,而不是考虑它的实际目的。
如果您想投票支持关闭,请执行此操作。
答案 0 :(得分:1)
问题在于你打电话
$(document).ready(function(){
myFunc();
});
一旦文件就绪事件被触发(当页面准备好时),将调用myFunc。
但是如果你把那个块放到一个函数中,只要你调用包装函数就会调用它,并且可能为时太晚而无法监听document.ready事件。
即。
function doSomething()
{
$(document).ready(function(){
myFunc();
});
}
当你调用doSomething()时,它会将myFunc()绑定到页面就绪事件。但是如果你在page.ready事件被触发(你的页面已经加载)之后调用它,就像你在用户点击某些内容时调用它一样,那么myFunc()将永远不会发生。
第一个实现通常是最好的,通常你不想立即将你的函数绑定到事件,然后回应它们。
答案 1 :(得分:1)
如果由于某种原因需要在DOM加载上定义函数,则可以将函数分配给范围内变量(在本例中为window.myFunc
)。
$(document).ready(function() {
window.myFunc = function(){
alert('myFunc');
}
});
由于每个浏览器窗口只有一个窗口实例,因此您可以从任何地方访问它。注意不要覆盖任何窗口的固有方法。
window.myFunc();
答案 2 :(得分:0)
(function($){/ do smth /})(jQuery);