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()
。