是否有可能以某种方式拦截DOM就绪事件,以便通常在$(document).ready(function() { ... }
之内触发的任何内容不会被执行?然后再手动触发事件,使代码被执行了?jQuery:拦截原始DOM就绪事件?
在我的情况,我有大量的现有代码已经依靠$(document).ready(function() { ... }
,我的希望是,我也不会做一个查找/替换有这一切依赖于定制的手动触发事件。
是否有可能以某种方式拦截DOM就绪事件,以便通常在$(document).ready(function() { ... }
之内触发的任何内容不会被执行?然后再手动触发事件,使代码被执行了?jQuery:拦截原始DOM就绪事件?
在我的情况,我有大量的现有代码已经依靠$(document).ready(function() { ... }
,我的希望是,我也不会做一个查找/替换有这一切依赖于定制的手动触发事件。
jQuery.trigger()是为这样的需要作出
附有 .bind()或它的快捷方式的方法 之一的任何事件处理程序,当对应 事件发生时被触发。但是,可以使用.trigger() 方法手动触发 。到.trigger()的调用在他们 是,如果事件是由用户触发 自然地以相同的顺序执行 处理程序:
如果你不想要的东西是“正常”触发时,不应该在$(document).ready(on_ready_func)
。一旦DOM被加载并且在加载页面内容之前,它内部的所有东西都会加载。
取而代之的是,从on_ready_func中选择您希望手动触发到另一个函数中的内容,例如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);
快乐编码。
但是,如何防止原始事件触发?据我可以告诉e.preventDefault()在这种特殊情况下是不可能的。 – Wilco 2011-04-14 05:10:54
当你不想在dom上触发任何事件准备好然后为什么你在'准备好'里面写入 – diEcho 2011-04-14 05:13:11
我基本上试图避免重写当前依赖于DOM就绪事件的大量现有脚本。我希望能有一些方法来拦截它,并在以后手动触发它。 – Wilco 2011-04-14 05:22:16