jquery .bind()和/或.ready()无效

时间:2011-06-01 00:57:00

标签: javascript jquery

所以我有这段代码:

var bindAll;
bindAll = function ()
{
    $('#somediv').bind('mouseover', function(){do something});
};

var init;
init = function ()
{
    bindAll();
    ...
};

$(document).ready(init());

它不起作用。但如果我通过替换:

将绑定放在计时器上
bindAll();

tt = setTimeout('bindAll()', 1000);

它突然完美无缺。什么!??

3 个答案:

答案 0 :(得分:5)

jQuery ready需要一个处理程序,而不是一个函数调用。

// $(document).ready(init()); <-- Not working
$(document).ready(init); <-- Working!

工作示例:http://jsfiddle.net/marcosfromero/Qwghb/

答案 1 :(得分:4)

你没有将init传递给$(document).ready,你正在传递任何init返回。

试试这个:

$(document).ready(init);

说明:

当您尝试传递该功能时,您实际上是在运行它。在运行它时,DOM还没有准备好,因此没有发生对元素的绑定,因为它不存在。

当你执行超时时,它起作用,因为DOM完成需要不到一秒的时间,这意味着当它运行时,元素就在那里,所以它可以绑定事件。

答案 2 :(得分:0)

只需将没有括号的init传递给ready函数。它会立即在您的情况下执行,而不是准备好文档:

$(document).ready(init);