-1
<li class="page_item "><a href="javascript:">A</a>
<ul class="children">
    <li class="page_item"><a href="javascript:">1</a></li>
    <li class="page_item"><a href="javascript:">2</a></li>
</ul>
</li>
<li class="page_item "><a href="javascript:">B</a>
<ul class="children">
    <li class="page_item"><a href="javascript:">1</a></li>
    <li class="page_item"><a href="javascript:">2</a></li>
    <li class="page_item"><a href="javascript:">3</a></li>
    <li class="page_item"><a href="javascript:">4</a></li>
</ul>
</li>

$('.children a').click(function(event){ 
    event.stopPropagation();
        $('ul.children').prev().css('background','red');  
});

在线示例:http: //jsfiddle.net/uybPf/

我想实现当我点击A或B的子菜单时,A或B就会高亮显示。但我的代码突出显示了所有这些。我不想使用toggleClass() 请有人帮忙修复我的代码。谢谢

4

5 回答 5

4

那是因为您正在使用which 将为该集合中的每个元素ul.children执行代码。试试这个:

$('.children a').click(function(event){ 
    event.stopPropagation();
    $("ul.children").prev().css('background','none');
    $(this).closest("ul.children").prev().css('background','red');  
});

演示:http: //jsfiddle.net/uybPf/6/

于 2013-03-28T21:25:59.703 回答
2
$('.children a').click(function(event) {
    event.stopPropagation();
    $(this).closest('ul.children').prev().css('background', 'red');
});

http://jsfiddle.net/uybPf/2/

于 2013-03-28T21:25:29.497 回答
1

您应该使用closestorparent方法:

$('.children a').click(function (event) {
    event.stopPropagation();
    $('.page_item a').removeClass('highlight'); // remove previously active class
    $(this).closest('.children').prev().addClass('highlight');
});

http://jsfiddle.net/uybPf/3/

您应该更好地使用addClassremoveClass方法,而不是因为您已经在 CSS 中css定义了类。.highlight

于 2013-03-28T21:28:10.887 回答
0

试试这个

$('.children a').click(function(event){ 
    event.stopPropagation();
    $('>a:first', $(this).closest('.children').closest('.page_item')).css('background', '#f00')
});

但是,这不会取消突出显示先前突出显示的父级

阅读您的问题的评论后,编辑:

添加

$('.page_item > a').css('background','transparent');

event.stopPropagation();
于 2013-03-28T21:31:54.630 回答
0

试试这个

$('.children a').click(function (event) {
    event.stopPropagation();
    $(this).closest('ul.children').parent().children('a').css('background', 'red');
});

http://jsfiddle.net/uybPf/2/

于 2013-03-28T21:47:17.523 回答