0

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

问题是,当我按下元素时,附加到其事件的事件处理程序(据说是)似乎touchstart不会触发。

要么由于某些原因这些事件没有真正附加,要么点击在以某种方式到达它们之前被阻止......

我正在尝试调试这种情况并想知道:

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

  2. 有没有一种简单的方法可以覆盖.on并拥有它console.log的参数

  3. 关于我应该如何解决这个问题的任何其他想法

更新:在验证元素确实有touchstart处理程序并且没有被调用后,我发现如果我添加点击或mousedown事件处理程序,它们确实会被调用。

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

4

2 回答 2

0

你如何记录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。

于 2012-07-23T07:46:40.717 回答
0

这个 Chrome 扩展列出了附加的 JQuery 事件。

于 2012-07-23T07:19:15.680 回答