4

我在同一个元素上有一个 mouseDown 事件和一个 click 事件。当我单击它时,mouseDown 事件会触发(即警告“鼠标按下 P”),但 click 事件不会。但是,如果我注释掉 mouseDown 警报语句,click 事件会显示它的警报。为什么是这样? http://jsfiddle.net/A8vhq/

4

3 回答 3

6

这是因为单击永远不会发生,当出现警告框时,它会中断元素上的 mouseup 事件,从而中断 mouseclick。

用于console.log('message')测试您的代码,而不是alert.

于 2012-04-06T20:01:58.727 回答
0

而不是alert, 使用console.log它会起作用。

现场演示:http: //jsfiddle.net/A8vhq/1/


顺便说一句,我对代码进行了一些重构:

$('p').on('mousedown', function (e) {
    console.log('Mouse pressed on ' + e.target.nodeName);
});

$('p').on('click', function (e) {
    console.log(e.target.nodeName + ' clicked');
});
于 2012-04-06T20:01:26.130 回答
0

只需替换alertconsole.log或任何其他非模态输出方式。

于 2012-04-06T20:02:58.753 回答