我有这个HTML:
<ul class='loc-list'>
<li id="where_7" class="cont-list">North America
<ul>
<li id="contry_114" class="contry-list">canada</li>
<li id="contry_115" class="contry-list">mexico</li>
<li id="contry_117" class="contry-list">united states</li>
</ul>
</li>
</ul>
现在我已经编写了两个jquery函数onclick of list:
1 ST
$(".cont-list").on("click", function(event){
alert("clicked on continent's list"); // working fine
};
2 第二
$(".contry-list").on("click", function(event){
alert("clicked on country's list"); // not working!
};
当我点击 cont-list 时,它会被调用,但在 2 nd 函数中它是不被调用而是 1 st 函数被调用!
是因为它是内心清单吗?如果是这样,那么如何处理这个问题,以便只有在点击该列表时才会调用它?
提前致谢!
答案 0 :(得分:8)
那是因为事件冒出来了,您可以使用stopPropagation
对象的event
方法:
$(".contry-list").on("click", function(event){
event.stopPropagation();
alert("clicked on country's list");
});
如果要动态生成li
元素,则应委派事件:
$(document).on('click', '.coutry-list', function(){
console.log('li element is clicked');
})
答案 1 :(得分:1)
$(".contry-list").on("click", function(event){
event.stopPropagation();
alert("clicked on country's list");
});
答案 2 :(得分:1)
$(".contry-list").on("click", function(e){
e.stopPropagation();
alert("clicked on country's list");
});
答案 3 :(得分:0)
jQuery中的修复方法是:
$(".contry-list").on("click", function(event){
alert("clicked on country's list"); // not working!
return false;
});
但正如epascarello指出的那样,你应该学习DOM事件冒泡(和捕获)来理解它。