2011-07-02 17 views
6

我想为文档元素使用jQuery ready()函数。这里是我的脚本:jQuery ready()函数可以为同一个元素使用两次吗?

第1页:

$(document).ready(function(){ 
      $('form#haberekle').ajaxForm(options); 
}); 

第2页:

$(document).ready(function() { 
    var options = { 
     success:showResponse, 
     beforeSubmit:showRequest, 
     resetForm:true 
    }; 
    $('#haberresmiekleform').ajaxForm(options); 
}); 

这两个页面都包含在同一主网页与<!--#include file=""-->

灿这两个功能正常工作,还是彼此阻塞?根据我的经验,他们似乎正常工作。例如:onclick按钮的功能只有一个。

回答

10

您可以根据需要调用任意多个.ready()调用,jQuery的设计考虑到了这一点,并且绝对没问题。

所以,是的,它是OK,你不会有任何问题......这一切发生的时间。

把它当作一个事件处理程序,像.click(),这正是它的行为(当然,严格地说,不是正好,但对于大多数的目的是这样)。所以你可以有多少你想要的。

还要说明一点,可能会感兴趣,在处理您通过.done()传递到.ready()are pushedreadyList,这意味着它们会在你叫他们在页面中的顺序执行。在早期版本的jQuery中,相同的顺序行为是正确的(尽管通过数组,不同的方法)。

2

是的,这很好。两者都会在dom完全加载时调用。请注意,如果您在之后调用.ready(),则dom已经加载,回调将立即执行。见http://api.jquery.com/ready/

1

没问题,连接多个处理程序为同一事件。为ready文档说:

还有 的$(document).bind( “准备就绪”,处理程序)。 此行为与准备好的 方法类似,但有一个例外:如果 准备好的事件已经被触发,并且您的 试图执行.bind(“就绪”),则绑定的 处理程序将不会执行。

并为bind的文件说:

当一个事件到达一个元素,绑定到该事件类型 元素都 处理器被解雇。如果有 注册多个处理程序,他们 将始终执行的顺序 在它们绑定

+0

其实'。就绪()'不是'.bind()'快捷方式,你可以看到这里的源代码:https://github.com/jquery/jquery/blob/master/src/core.js#L255虽然它的行为方式类似。 –

+0

正确。我已经解决了我的答案。谢谢。 –

相关问题