'click'有点儿奇怪
方法1:直接将click
处理程序绑定到a
元素,Chrome中的中键单击会触发处理程序,但在FF中不会触发。
$('div a').on('click', function(ev) {
// middle click triggers this handler
});
方法二:将委托的click
处理程序绑定到包含一个或多个a
的div
上。在Chrome或FF中,中键单击不会触发此处理程序。
$('div').on('click', 'a', function(ev) {
// middle click doesn't trigger this handler
});
如果
a
元素后来通过AJAX调用或某些用户输入填充,则此方法非常有价值。
使用'mouseup'
使用mouseup
而不是click
会使得两种方法在两种浏览器中都起作用。
// Approach 1 w/ mouseup
$('div a').on('mouseup', function(ev) {
// middle click **does** trigger this handler in Chrome and FF
});
// Approach 2 w/ mouseup
$('div').on('mouseup', 'a', function(ev) {
// middle click **does** trigger this handler in Chrome and FF
});
这里是带有 mouseup
的JSFiddle。
这很有趣,某些情况下可能会有用,因为mouseup
几乎等同于click
。 但是mouseup
并不等同于click
,我想要的是click
的行为。 我不想创建一个hacky的mousedown; setTimeout; mouseup
来模拟click
。
我相当确定答案是否定的,但是否有一种跨浏览器的方法可以让鼠标中键触发click
处理程序? 如果没有,原因是什么?
click
的笨拙的mousedown; setTimeout; mouseup
方法。”重新发明点击似乎不是一个好主意,但我会再次权衡利弊。 - mwcze.which
始终返回一个数字,为什么不直接与一个数字进行严格比较呢? - adeneo