我的on()失败但click()被执行的原因是什么?

时间:2017-03-22 10:06:43

标签: javascript jquery

我的代码包含click()功能,有效

$(document).ready( function() {
  $('.rate .fa-star').click( function() {
    alert('Clicked!');
  });
});

然而,on()函数的代码不起作用,我不知道为什么

$(document).ready( function() {
  $('body').on('click', '.rate .fa-star', function() {
    alert('Clicked!');
  });             
});

知道可能是什么问题吗?在控制台中,我根本没有看到任何错误。

更新

我在其他地方有这行代码,当我发表评论时,on()也有效:

$(".rate i.fa-star").click(function(e) { e.stopPropagation(); });

问题是,我需要这一行来获取我网站上的其他功能。那么,任何想法如何使on()click()这样的代码一起工作现在正在发挥作用?

2 个答案:

答案 0 :(得分:5)

我认为某些功能必须阻止此点击事件冒泡到body元素。

可能在某个事件处理程序中有一些return falseevent.stopPropagation()在此元素和body之间的某处。

我已经在我的网站上检查了您的代码,它就像一个魅力。

答案 1 :(得分:1)

$(".rate i.fa-star").click(function(e) { e.stopPropagation(); })

如果这一行出现在你的其他事件处理程序之前,那么你就找到了罪魁祸首。

当你调用e.stopPropagation()时,jQuery会在该行停止事件,其他事件处理程序将不会收到该事件。

如果希望事件处理程序起作用,则需要删除仅阻止事件传播的其他处理程序。