【发布时间】:2012-09-12 19:31:36
【问题描述】:
您好,如果按下并拖动鼠标左键,我正在尝试运行一个函数。
我似乎无法弄清楚以下代码有什么问题:
var leftbuttondown = false;
$("#tiles p").live("mousedown mouseover", function (e) {
(e.which === 1) ? leftbuttondown = true : leftbuttondown = false ;
if(leftbuttondown === true){
updateMap(this);
}
});
代码在 chrome 中按预期工作,但在 firefox 和 safari 中,它在鼠标悬停时执行代码,无论是否按下任何东西。
我也尝试了以下
$("#tiles p").live("mousedown mouseover", function (e) {
if(e.which === 1){
updateMap(this);
}
});
在 chrome 中再次按预期工作,但在 firefox 或 safari 中无法正常工作...
我在这里检查过:
http://api.jquery.com/event.which/
这告诉我每个浏览器的鼠标左键 = 1
它开始让我感到沮丧,所以任何和所有的帮助都会很棒
【问题讨论】:
-
为什么不能把它拆分成两个事件绑定?另外,请使用
delegate或on而不是live。 -
live 被使用是因为它应用的元素是动态生成的,分离绑定将需要 mouseup 的第三次绑定你会期望在 chrome 中我只是想知道为什么它在 safari 或 firefox 中不起作用。顺便说一下,在所有浏览器中分离绑定确实有效,尽管有时可能会有点问题
-
你检查过 event.which 的值吗?插入
console.log(event.which)并在此处发布结果。