关于document.ready的JQuery解释

时间:2009-08-10 09:11:42

标签: javascript jquery

我有问题第一次在click.ready()中运行click事件或任何其他事件吗? 我的意思是在没有第一次点击的情况下将DOM元素加载到评论后会达到吗? :)

$(document).ready(
  $(#foo).click( 
   function()
    {
       // "It reached here after DOM is loaded!"
    }
  )
)

3 个答案:

答案 0 :(得分:4)

document.ready在DOM完全加载时触发,因此你是正确的。

然而,除非单击绑定元素使用click()或Events/trigger显式调用click事件,否则不会触发'click'事件:

$('#foo').click();
$('#foo').trigger("click");

您是否阅读过document.ready的手册页?参见:

http://docs.jquery.com/Tutorials:Introducing_$(document).ready()

答案 1 :(得分:3)

不,该功能不会被执行。

有一些错误:

$(document).ready()将函数作为参数。 '#foo'也应该是一个字符串。

$(document).ready(function() {
  $('#foo').click( 
   function()
    {
       // "It reached here after DOM is loaded!"
    }
  )
})

如果您希望在dom加载后至少评估一次该功能。那么最简单的方法可能就是命名你的功能。

例如:

$(document).ready(function() {
  $('#foo').click( 
   function myfunction()
    {
       // "It reached here after DOM is loaded!"
    }
  );
  myfunction();
})

如果需要在$('#foo')范围内执行该函数,可以使用Function.call()方法执行此操作。

例如:

$(document).ready(function() {
  $('#foo').click( 
   function myfunction()
    {
       // "It reached here after DOM is loaded!"
    }
  );
  myfunction.call($('foo'));
})

这会使它的行为更像是由DOM事件触发的行为。我确信JQuery有一个特定的方法来触发通过它的DOM事件函数注册的事件。它也可以是一个选项,因为它可能也会模拟传递给“myfunction”的事件对象。

答案 2 :(得分:0)

为了概括这个问题,通过将事件类型(onclick,onkeyup,onfocuse等)与一个函数(或多个函数)相关联来处理JavaScript事件。当然,该函数已被解析,但在关联事件发生之前不会对其进行求值。此外,在此上下文中,“函数”通常称为事件处理程序事件回调