Javascript 不调用单击事件
我有一种奇怪的问题 我正在尝试向som DOM元素添加几个事件(都是现有的,有些最初是隐藏的:Javascript 不调用单击事件,javascript,jquery,Javascript,Jquery,我有一种奇怪的问题 我正在尝试向som DOM元素添加几个事件(都是现有的,有些最初是隐藏的: $self.on("focus", function () { $self.next().css("display", "inline-block"); }); $self.on("blur", function () { $(this).next().hide(); }); $self.parent().find(".icon-ok").on("click", function(
$self.on("focus", function () {
$self.next().css("display", "inline-block");
});
$self.on("blur", function () {
$(this).next().hide();
});
$self.parent().find(".icon-ok").on("click", function() {
console.log("icon.ok")
});
您可以在此处看到DOM的相关部分(self是span用户名):
后来,元素最终是可见的,我可以单击它。但是,事件处理程序永远不会被调用。如果我删除模糊事件,单击事件就会起作用。但是,我需要两者
这是怎么回事?
如何修复它?您的问题可能是典型的委托问题,当事件绑定时,元素中的元素在DOM中不可用 委派活动,看看这是否解决了您的问题
$self.on("click", ".icon-ok", function() {
console.log("icon.ok")
});
用户$self
如果该元素是可见的,或者您可以找到的任何最接近的祖先始终存在于DOM中。模糊会取消单击(由于事件顺序),但是使用鼠标向下而不是模糊可能会帮助您同时获得这两个元素
更新:根据注释添加代码
$self.parent().find(".icon-ok").on("mousedown", function() {
console.log("icon.ok")
});
尝试
$self.closest(“.user name”)。在(“单击“,”.icon ok”,function(){console.log(“icon.ok”)})
上正确地(只是猜测一下)这些事件之一需要返回true;
才能继续处理其他事件类型。falsarella,Mathew,两者都不起作用:(什么元素是$self
?$self是.icon ok设置事件时,实际上在DOM中,这不是问题。我尝试了你的建议以防万一,但它不起作用。可能我误解了你的问题,但使用它来代替单击。$self.parent().find(.icon ok”)。on(“mousedown”,function(){console.log(“icon.ok”)};你的“click”将在模糊之前触发。啊,鼠标向下而不是点击有效!简单而伟大的解决方案。