[英]Listing the Document Ready events in jQuery
我正在嘗試查找一些非常復雜的Javascript中的問題,我需要查找當前屏幕上活動的所有jQuery(document).ready(
事件,因為其中之一是導致問題的原因)。
我只是問了一個有關在jQuery上訪問事件的一般性問題,並得到了一個很好的答案,但是不幸的是,它仍然不能解決我的特定問題。
我現在有:
> jQuery._data(document).events
哪個返回:
Object {mouseup: Array[1], touchstart: Array[2], touchmove: Array[1], touchend: Array[1], click: Array[1]…}
MSPointerOver: Array[1]
click: Array[1]
mousemove: Array[1]
mouseup: Array[1]
pointerover: Array[1]
touchend: Array[1]
touchmove: Array[1]
touchstart: Array[2]
__proto__: Object
但是我正在尋找使用jQuery(document).ready(
注冊的文檔就緒事件的列表,而這些似乎都不是...
好吧,假設您有權訪問源,則可以覆蓋$.fn.ready
:
jQuery.fn.ready = function( fn ) {
// log the argument
window.console && console.log(fn);
// preserve default behaviour
jQuery.ready.promise().done( fn );
return this;
};
當然, 在任何實際的.ready()
調用之前都必須包含此函數 。
示例: http : //jsfiddle.net/49uksstv/
請參閱這篇帖子, 准備列表不再暴露於1-4中 。 在jquery 1.11.1.js的第3481行,
readyList = jQuery.Deferred();
雖然,能夠收集有關.ready()
event
函數的數據,
function evt() {
$(document)
.on("click", function(e) {
alert(1);
});
alert(2);
};
$(document).on("ready", evt);
console.log(jQuery._data(document
, "events").ready[0]
, jQuery._data(document
, "events").ready[0].handler);
哪里
jQuery._data(document, "events").ready[0].handler
將是evt()
的文本
但是,如果嘗試
$(document).on("ready", evt1, evt2);
evt
將被注冊為event.data
,而不是類型function
可以嘗試在.ready
或自定義event
之外創建對象或函數數組, on
用於編譯附加函數
將函數添加到數組中,然后通過調用$.each()
jQuery._data(document).events
使函數數組dequeue
。
.ready
出現jQuery.Deferred()
,可以創建自定義的延遲對象,通過檢查.isReady
,或者在某些條件下使用$.holdReady(true)
, $.holdReady(false)
; 或在函數通過條件數組中的每個函數之后; 返回正確的init
類型值?。
還是不利用.ready()
並僅利用自定義.on()
事件,或者不通過檢查數組init
類型值中函數document
的條件來推遲自定義解析?
嘗試
function evt() {
$(document)
.on("click", function(e) {
alert(1);
});
alert(2);
};
$(document).on("ready", evt);
console.log(jQuery._data(document
, "events").ready[0]
, jQuery._data(document
, "events").ready[0].handler);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.