我有一个关于一个单一的点击,从搜索的一个常见问题两次射击元素点击事件,但我已经排除了其他答案的潜在原因可能。 该代码是
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/
根据这个网站的双重用途的$(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...
}
啊,找到了! 标签上有包裹在里面和事件之一是由于对传播了一个点击输入。
添加
$("label.tiletype input").click(function(event) {
event.stopPropagation();
});
到http://jsfiddle.net/okohll/cKgAp/
修复它。 谢谢你的提示做的jsfiddle,我最初以为我将无法复制它。
您的代码中有语法错误,它应是
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代码有效性的其余部分(例如,未关闭的标签可能会导致此行为)。
您可以使用上()
$("label.tiletype").on('click', function (event) {
alert("label clicked, x = " + event.pageX + ", y = " + event.pageY);
});
http://jsfiddle.net/cKgAp/6/