jQuery的点击火灾两次,但只注册一次(jQuery click fires twice but

2019-10-17 21:54发布

我有一个关于一个单一的点击,从搜索的一个常见问题两次射击元素点击事件,但我已经排除了其他答案的潜在原因可能。 该代码是

console.log("registering label click");
$("label.tiletype").click(
  function(event) {
    event.stopPropagation(); // stop the .tile click being called
    console.log("label clicked, x = " + event.pageX + ", y = " + event.pageY);
    // more code...
  }
}

当页面加载和“label.tiletype”点击,日志

registering label click
label clicked, x = 679, y = 172
label clicked, x = 679, y = 172

由于“注册标签,点击”只发生一次,它不能是对点击任何理由约束两次。

由于pageX属性和pageY坐标是相同的,双重事件从同一个物理点,没有第二个程序上的点击时()被调用的元素(我想,如果错了指正)。

调试线只在代码特定位,所以没有其他的单击事件触发。

我已经检查在萤火虫源和有多个“label.tiletype”元素,但没有重叠在屏幕上,它们都显示:块和float:左。

还有其他的东西JavaScript文件(375行中发生https://github.com/okohll/agileBase/blob/200dd1c6c1a8968bc9d8f5b2b3d9188ac4776984/gtpb_clientside/resources/simple/simple.js ),但其他任何正在发生的事情,上面的语句必须始终真正的逻辑。

发生这种情况无论是在Firefox和Safari。

有什么我错过了?

的jsfiddle: http://jsfiddle.net/okohll/cKgAp/

Answer 1:

根据这个网站的双重用途的$(document).ready可能是原因。 尝试通过先解除绑定你的函数避免它:

$('label.tiletype').unbind('click').bind('click',
function(event) {
  event.stopPropagation(); // stop the .tile click being called
  console.log('label clicked, x = ' + event.pageX + ', y = ' + event.pageY);
  // more code...
}


Answer 2:

啊,找到了! 标签上有包裹在里面和事件之一是由于对传播了一个点击输入。

添加

$("label.tiletype input").click(function(event) {
  event.stopPropagation();
});

到http://jsfiddle.net/okohll/cKgAp/

修复它。 谢谢你的提示做的jsfiddle,我最初以为我将无法复制它。



Answer 3:

您的代码中有语法错误,它应是

console.log("registering label click");
$("label.tiletype").click(function(event) {
    event.stopPropagation(); // stop the .tile click being called
    console.log("label clicked, x = " + event.pageX + ", y = " + event.pageY);
    // more code...
});

但是这个代码工作正常(只有一个“标签点击”消息触发)。 所以,你应该检查你的代码或HTML代码有效性的其余部分(例如,未关闭的标签可能会导致此行为)。



Answer 4:

您可以使用上()

$("label.tiletype").on('click', function (event) {
   alert("label clicked, x = " + event.pageX + ", y = " + event.pageY);
});

http://jsfiddle.net/cKgAp/6/



文章来源: jQuery click fires twice but only registered once
标签: jquery click