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