不调用click事件

时间:2015-06-15 21:03:48

标签: javascript jquery

我有一些奇怪的问题。

我正在尝试向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用户名): enter image description here

稍后,该元素最终因为可见而我可以点击它。但是,永远不会调用事件处理程序。如果我删除模糊事件,则比点击事件有效。但是,我需要两者。

这里发生了什么? 我该如何解决?

2 个答案:

答案 0 :(得分:1)

Looks like模糊取消了点击(由于事件顺序),但使用mousedown而不是模糊可能会帮助您同时获得这两种效果。

更新:根据评论添加了代码

$self.parent().find(".icon-ok").on("mousedown", function() {
  console.log("icon.ok") 
}); 

答案 1 :(得分:0)

您的问题可能是典型的委派问题,当绑定事件时,元素在DOM中不可用。

委派活动,看看是否能解决您的问题。

$self.on("click", ".icon-ok", function() {
    console.log("icon.ok")
});

用户$self,如果该元素可见,或者您可以找到的任何最接近的祖先,这些祖先始终存在于DOM中。