【问题标题】:jquery code works in chrome but not firefox or safarijquery 代码适用于 chrome 但不适用于 firefox 或 safari
【发布时间】: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

它开始让我感到沮丧,所以任何和所有的帮助都会很棒

【问题讨论】:

  • 为什么不能把它拆分成两个事件绑定?另外,请使用delegateon 而不是live
  • live 被使用是因为它应用的元素是动态生成的,分离绑定将需要 mouseup 的第三次绑定你会期望在 chrome 中我只是想知道为什么它在 safari 或 firefox 中不起作用。顺便说一下,在所有浏览器中分离绑定确实有效,尽管有时可能会有点问题
  • 你检查过 event.which 的值吗?插入console.log(event.which) 并在此处发布结果。

标签: jquery firefox safari


【解决方案1】:

即使没有按下按钮,Firefox 似乎也将 e.which 设置为 1。

Demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    • 2015-06-06
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多