簡體   English   中英

列出jQuery中的文檔就緒事件

[英]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);

jsfiddle http://jsfiddle.net/guest271314/c4z8pv9p/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM