Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不调用单击事件_Javascript_Jquery - Fatal编程技术网

Javascript 不调用单击事件

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(

我有一种奇怪的问题

我正在尝试向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() {
    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”将在模糊之前触发。啊,鼠标向下而不是点击有效!简单而伟大的解决方案。