jquery on(click)不起作用但on(hover)不行

时间:2012-10-18 13:34:03

标签: javascript jquery javascript-events

初始化js后,我创建了具有close class的新<div>元素,并且on("click")函数不起作用。

$(document).on('click', '.post-close', function () {
        alert("hello");
});

on('hover')完美无缺。

$(document).on('hover', '.post-close', function () {
        alert("hello");
});

但我需要点击它。

3 个答案:

答案 0 :(得分:4)

这是因为您没有阻止浏览器的默认行为。将e传递给您的处理程序,然后使用e.preventDefault()

$(document).on('click', '.post-close', function (e) {
    e.preventDefault();
    alert("hello");
});

修改

此外,在创建新的<div>

之前绑定处理程序

答案 1 :(得分:1)

为什么不使用像

这样的东西
$('.post-close').click(function(){
   //do something
});

如果动态添加元素,请使用:

$(document).on('click', '.post-close', function(){
   //do something
});

编辑:
像danWellman所说,你可以添加preventDefault,以确保没有其他代码被执行。否则使用上面的代码。

EDIT2:
将.live更改为.on

答案 2 :(得分:0)

这是一个旧帖子,但我有一个完全相同的问题(动态创建的元素,悬停工作,但点击不会)并找到解决方案。 我希望这篇文章可以帮助别人。

就我而言,我发现ui-selectable用于父元素,这阻止了click事件传播到文档。

所以我添加了一个按钮元素的选择器给ui-selectable&#39;取消&#39;选择和问题解决了。

如果您有类似的问题,请查看

  • 尝试转换父元素的库
  • 你没有在父元素中使用stopPropagation()吗?