jQuery:拦截原始的DOM ready事件?

时间:2011-04-14 05:00:34

标签: javascript jquery

是否有可能以某种方式拦截DOM就绪事件,以便通常在$(document).ready(function() { ... }内触发的任何内容都不会被执行?然后手动触发事件,以便代码 执行?

在我的情况下,我有大量已经依赖$(document).ready(function() { ... }的现有代码,我希望我不必进行搜索/替换以使所有代码都依赖于自定义手动触发事件

2 个答案:

答案 0 :(得分:0)

jQuery.trigger()是为了满足这种需求而制作的

  

随附的任何事件处理程序   .bind()或其快捷方法之一   相应时触发   事件发生。他们可以解雇   但是,使用.trigger()手动   方法。调用.trigger()执行   处理程序的顺序与它们相同   如果事件被触发将是   自然是由用户:

答案 1 :(得分:0)

如果您不希望某些内容被“正常”触发,则不应该在$(document).ready(on_ready_func)中。一旦加载DOM并加载页面内容,它内部的所有内容都将加载。

相反,从on_ready_func cherrypick中你想手动触发到另一个函数的东西就像manual_func一样,并在你选择的事件中调用该函数。

请注意,ready函数无法使用触发器触发,因此您无法再次触发func,除非您将其作为单独的函数。

分手是你最好的选择。

var manual_func = function(){
    // Manual loads
}

var on_ready_func = function(){
    // only things to be loaded on dom ready
    // e.g.

    $('button#load_manual_trigger').bind('click', manual_func);
}

$(document).ready(on_ready_func);

快乐编码。