jquery .bind()和/或.ready()无效
所以我有这个代码:
var bindAll; bindAll = function () { $('#somediv').bind('mouseover', function(){do something}); }; var init; init = function () { bindAll(); ... }; $(document).ready(init());
它不起作用。 但是如果我通过替换将绑定放在计时器上:
bindAll();
同
tt = setTimeout('bindAll()', 1000);
它突然完美无缺。 什么!??
你没有将init传递给$(document).ready
,你传递的是init返回的东西。
试试这个:
$(document).ready(init);
说明:
当您尝试传递该函数时,您实际上正在运行它。 在运行它时,DOM还没有准备好,因此没有发生与元素的绑定,因为它不存在。
当你执行超时时,它起作用,因为DOM完成需要不到一秒的时间,这意味着当它运行时,元素就在那里,因此它可以绑定事件。
jQuery ready
需要一个处理程序,而不是一个函数调用。
// $(document).ready(init()); <-- Not working $(document).ready(init); <-- Working!
工作示例: http : //jsfiddle.net/marcosfromero/Qwghb/
只需将没有括号的init传递给ready函数。 它会立即在您的情况下执行,而不是在文档准备就绪:
$(document).ready(init);