我有一个UL
列表,我想更改每个点击元素的类...很简单但是当我使用子类别时? ul
列出li
个元素,并使用以下代码:
<ul class="options">
<li>option 1</li>
<li>option 2
<ul>
<li>option 2.1</li>
<li>option 2.2</li>
</ul>
</li>
</ul>
<script>
$(".options li").click(function(){
$(this).toggleClass("chose");
});
</script>
还有很多CSS来处理其余的事情。
它更改了li
列表所在的主ul
元素的类,但我只希望它更改子列表中确切元素的类。
我怎么能这样做,以便父li
类不会改变,但只点击了实际的列表项。但也允许直接选择父li
元素?
答案 0 :(得分:4)
您可以在传入的事件对象上使用jQuery的stopPropagation()
函数:
$(".options li").click(function(event){
$(this).toggleClass("chose");
event.stopPropagation();
});
这样,事件只会针对被点击的元素触发,并且不会冒泡到父<li>
。
答案 1 :(得分:0)
<script>
$(".options li ul li").click(function(){
var $this = $(this);
var parentli = $this.parent().parent();
$this.toggleClass("chose");
parentli.doSomething();
});
</script>
应该可以正常工作。