我的代码包含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()
这样的代码一起工作现在正在发挥作用?
答案 0 :(得分:5)
我认为某些功能必须阻止此点击事件冒泡到body
元素。
可能在某个事件处理程序中有一些return false
或event.stopPropagation()
在此元素和body
之间的某处。
我已经在我的网站上检查了您的代码,它就像一个魅力。
答案 1 :(得分:1)
$(".rate i.fa-star").click(function(e) { e.stopPropagation(); })
如果这一行出现在你的其他事件处理程序之前,那么你就找到了罪魁祸首。
当你调用e.stopPropagation()
时,jQuery会在该行停止事件,其他事件处理程序将不会收到该事件。
如果希望事件处理程序起作用,则需要删除仅阻止事件传播的其他处理程序。