Javascript 单击锚定后,如何瞄准没有任何ULs的LI

Javascript 单击锚定后,如何瞄准没有任何ULs的LI,javascript,jquery,html,css,wordpress,Javascript,Jquery,Html,Css,Wordpress,我有一个简单的菜单,在锚中有一个箭头。我有一个jQuery,它添加了一个类来显示单击时的箭头。但是,如果单击的li a没有子菜单,我需要它在单击时不“显示箭头”。下面是我的菜单的一个粗略示例: <ul id="menu"> <li><a href="#">TopLevel_LinkOne <img src="img/down-carat.png" class="down-carat"></a></li> &l

我有一个简单的菜单,在锚中有一个箭头。我有一个jQuery,它添加了一个类来显示单击时的箭头。但是,如果单击的li a没有子菜单,我需要它在单击时不“显示箭头”。下面是我的菜单的一个粗略示例:

<ul id="menu">
    <li><a href="#">TopLevel_LinkOne <img src="img/down-carat.png" class="down-carat"></a></li>
    <li><a href="#">TopLevel_LinkTwo <img src="img/down-carat.png" class="down-carat"></a></li>
    <li><a href="#">TopLevel_LinkThree <img src="img/down-carat.png" class="down-carat"></a>
        <ul class="sub-menu">
            <li><a href="#">Submenu Link One <img src="img/down-carat.png" class="down-carat"></a></li>
            <li><a href="#">Submenu Link Two <img src="img/down-carat.png" class="down-carat"></a></li>
            <li><a href="#">Submenu Link Three <img src="img/down-carat.png" class="down-carat"></a></li>        
        </ul>   
    </li>        
</ul>
试试看

完整代码:

$('#menu li a').click(function() {
    $('ul li a').removeClass('show-arrow'); // Remove any previous arrows
    if($(this).closest('li').find('ul.sub-menu').length) {
      $(this).addClass('show-arrow'); // Show the arrow image
    }
 });
试试这个:

 if($(this).parent().find('ul').length) {
      $(this).addClass('show-arrow'); // Show the arrow image
 }

如果您的HTML允许您做出某些假设,那么您可以非常轻松地做到这一点

例如,如果安全地假设列表项只包含“一个
元素”或“一个
元素后跟一个子菜单”,则可以执行以下操作:

if( this.parentNode.children.length > 1)
但如果您想要健壮性,您可以这样做:

if( $("ul",this.parentNode).length)
这样试试

JQUERY代码:

$('#menu li a').click(function() {
    $('ul li a').removeClass('show-arrow'); // Remove any previous arrows
       if($(this).siblings('ul').length) {
          $(this).addClass('show-arrow'); // Show the arrow image
       }
});    
现场演示:


快乐编码:)

这一款可能适合您:

$('#menu > li').click(function () {
    $('ul li a').removeClass('show-arrow');
    $(this).has('ul.sub-menu').addClass('show-arrow');
}
您可以相应地修改它以满足您的需要。谢谢

$('#menu li a').click(function() {
    $('ul li a').removeClass('show-arrow'); // Remove any previous arrows
       if($(this).siblings('ul').length) {
          $(this).addClass('show-arrow'); // Show the arrow image
       }
});    
$('#menu > li').click(function () {
    $('ul li a').removeClass('show-arrow');
    $(this).has('ul.sub-menu').addClass('show-arrow');
}