我正在尝试在一些非常复杂的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(
注册的文档就绪事件的列表,而这些似乎都不是......
答案 0 :(得分:1)
好吧,假设您有权访问源代码,则可以覆盖$.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()
来电
答案 1 :(得分:1)
请参阅此帖readylist-is-no-longer-exposed-in-1-4。在第3481行的jquery 1.11.1.js,
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
编译附加函数
通过调用dequeue
中的jQuery._data(document).events
,向数组添加函数,然后$.each()
函数数组。
.ready
显示jQuery.Deferred()
,可以创建自定义延迟对象,通过.isReady
检查调用,或使用$.holdReady(true)
,$.holdReady(false)
调用某些条件;或者在函数传递条件数组中的每个函数之后;返回正确的init
类型值?。
或者,不使用.ready()
且仅使用自定义.on()
事件,或使用数组document
中init
函数'的检查条件自定义延迟解析 - 类型值?
尝试
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);