选择jQuery中未跟随子级列表的顶级链接

时间:2012-01-27 05:04:33

标签: jquery jquery-selectors menu

我有CMS生成的菜单,其HTML输出如下:

<ul id="category-nav">
<li>
    <a href="google.com" title=""> Top-level with Sub-Menu </a>
        <ul>                    
            <li>
                <a href="google.com" title=""> Google 2 </a>
                </li>                                               
            <li>
            <li>
                <a href="google.com" title=""> Google 3 </a>
                </li>                                               
            <li>
            <li>
                <a href="google.com" title=""> Google 4 </a>
                </li>                                               
            <li>
        </ul>
</li>
<li>
    <a href="google.com" title=""> Top-level w/out submenu  </a>
</li></ul>

我正在尝试使用以下命令创建一个带有jQuery的手风琴样式菜单:

$('#category-nav > li > a').click(function(){

                    if ($(this).attr('class') != 'selected'){
                        $('#category-nav li ul').slideUp();
                        $(this).next().slideToggle();
                        $('#category-nav li a').removeClass('selected');
                        $(this).addClass('selected');
                    }

                });

这很好,但是,我正在尝试使用带有'#'的子菜单替换顶级类别中的超链接引用,同时使用jQuery保留顶级类别w / out子菜单超链接引用。

我一直在尝试不同的变体:

$("#category-nav li > a > ul").parent().attr('href', '#')

没有成功。任何帮助将不胜感激!

谢谢!

1 个答案:

答案 0 :(得分:0)

$('#category-nav > li:has(ul) > a').attr('href', '#');

或者由于在选择器中不使用非css语法而可能更快:

$('#category-nav > li').has('ul').children('a').attr('href', '#');