是否有可能以某种方式拦截DOM就绪事件,以便通常在$(document).ready(function() { ... }
内触发的任何内容都不会被执行?然后手动触发事件,以便代码 执行?
在我的情况下,我有大量已经依赖$(document).ready(function() { ... }
的现有代码,我希望我不必进行搜索/替换以使所有代码都依赖于自定义手动触发事件
答案 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);
快乐编码。