Javascript my on()失败但click()被执行的原因?

Javascript my on()失败但click()被执行的原因?,javascript,jquery,Javascript,Jquery,我用click()函数编写了这段代码,它可以工作: $(document).ready( function() { $('.rate .fa-star').click( function() { alert('Clicked!'); }); }); 然而,这个带有on()函数的代码不起作用,我不知道为什么 $(document).ready( function() { $('body').on('click', '.rate .fa-star', function() {

我用
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”)。单击(函数(e){e.stopPropagation();})


问题是,我需要这一行在我的网站上的另一个功能。那么,你知道如何让
on()
click()
一样使用这行代码吗?

我认为有些函数必须防止这个click事件冒泡到
主体
元素

在该元素和
主体之间的某个事件处理程序中,可能有一些
返回false
事件.stopPropagation()

我已经在我的网站上查看了你的代码,它工作起来很有魅力。

$(“.rate I.fa-star”)。单击(函数(e){e.stopPropagation();})

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

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


如果希望事件处理程序正常工作,则需要删除仅阻止事件传播的另一个处理程序。

@rorymcrossan OP声明
click()
工作且
on()
不起作用。@KrzysztofDąbrowski谢谢-我的错。@John你能编辑你的问题,让它包含一个问题的工作演示,或者至少是你的问题演示吗HTML@RoryMcCrossan好吧,你刚才阻止我在编辑我的帖子时这么做,或者说是Stackoverflow。总之,只需在脚本之前添加
,就可以了。我不允许这样做,所以说它必须比你的编辑更重要;)试试:
$(文档)。在(…
上,而不是在“body”上,你可能是对的,我在其他地方有这个代码
$(“.rate.fa star”)。单击(函数(e){e.stopPropagation();});
但是,它是用于click()而不是on()。我可以对on()进行某种更改吗也可以吗?怎么做?我不知道你的确切意思。但是如果你想在
主体上使用
.on()
,你不能停止此事件的传播。这是不可能的。但在大多数情况下,你不必使用
事件。stopPropagation()
。你必须用另一种方式来做。问题是我是否可以使用
$(“.rate i.fa-star”).on(function(e){e.stopPropagation();})
我的回答是:
如果你想让你的事件处理程序工作,你需要删除另一个只阻止事件传播的处理程序。
所以,不,你不能使用
e.stopPropagation()