Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在jQuery中列出文档就绪事件_Javascript_Jquery - Fatal编程技术网

Javascript 在jQuery中列出文档就绪事件

Javascript 在jQuery中列出文档就绪事件,javascript,jquery,Javascript,Jquery,我试图在一些非常复杂的Javascript中找到一个问题,我需要找到所有的jQuery(document).ready(事件,这些事件在当前屏幕上是活动的,因为其中一个是导致问题的原因 我只是问了一个关于在jQuery上访问事件的一般性问题,得到了一个很好的答案,但不幸的是,它仍然没有解决我的具体问题 我现在有: > jQuery._data(document).events 返回: Object {mouseup: Array[1], touchstart: Array[2], tou

我试图在一些非常复杂的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()
调用之前,都需要包含这一点

示例:

参见本文。jquery 1.11.1.js第3481行

readyList = jQuery.Deferred();
尽管如此,我们还是能够收集有关
.ready()
事件的数据

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);
在哪里

将是
evt()的文本

然而,如果你尝试

$(document).on("ready", evt1, evt2);
evt
将注册为
事件。数据
,而不是类型
功能

可以尝试在
.ready
或自定义
事件
之外创建对象或函数数组,利用
上的
编译附加函数

将函数添加到数组中,然后通过调用
jQuery.\u data(document).events
中的
$.each()
函数数组出列

.ready
出现
jQuery.Deferred()
,可以创建自定义的延迟对象,通过检查
.isReady
调用,或者在某些条件下使用
$.holdReady(true)
$.holdReady(false)调用
;或在函数传递条件数组中的每个函数之后;返回正确的
init
类型值

或者,不使用
.ready()

试一试


JSFIDLE

你能劫持/截获ready方法和对它的控制台日志调用吗?它们可能在jQuery的幕后组合成一个事件处理程序。你最好在
ready
方法中找到jQuery的源代码,看看它是从哪里调用的。注意
.ready
li有不同的版本ke
$(function(){your DOM ready code});
可能会通过稍微不同的代码路径。感谢您的回答,尽管我发现在某些地方有点难以理解,但它仍然非常有用。我现在在家,但我可以在周一正确尝试。
$(document).on("ready", evt1, evt2);
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);