是否有可能以某種方式攔截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