调试事件处理程序通过jquery添加到元素

时间:2012-07-23 06:49:29

标签: jquery iphone jquery-mobile cordova javascript-events

我正在尝试调试一些复杂的代码,其中一些UI在iphone phonegap应用程序中创建。

问题在于,当我按下元素时,事件处理程序(据说可能)附加到其touchstart事件不会触发。

由于某些原因,这些事件并未真正附加,或者点击在以某种方式到达之前被阻止...

我正在尝试调试这种情况并且正在徘徊:

1)给定一个jquery对象,是一种列出附加到它的事件处理程序(通过jquery)进行调试的方法吗?

2)是否可以轻松覆盖.on并让console.log参数

3)关于如何处理这样一个问题的任何其他想法

更新: 在确认该元素确实具有touchstart处理程序且未被调用之后,我发现如果我添加click或mousedown事件处理程序,则会调用它们。

我怀疑这部分是由jquery mobile引起的,但我不确定如何或为什么以及为什么它只影响我的部分控件(那些不是JQM控件......)。

2 个答案:

答案 0 :(得分:0)

This Chrome extension列出了附加的JQuery Events。

答案 1 :(得分:0)

How do you log all events fired by an element in jQuery?

function getEventsList($obj) {
    var ev = new Array(),
        $events = $obj.data('events');
    for(var i in $events) {
        ev.push(i);
    }
    return ev.join(' ');
}

$obj.on(getEventsList($obj), function(e) {
    console.log(e);
});

我用它来找出jquery插件绑定到元素的确切自定义事件。它获取所有附加事件,并在事件被触发时调用console.log。