通过子<div>获取每个<li>并更改</div> </li> <li>&#39; <a> attribute</a> </li>

时间:2015-01-24 00:07:31

标签: jquery html mobile menu disable-link

我正在禁用菜单中的链接并将其转换为手风琴式按钮。 有些链接没有孩子(如果你愿意,可以下载),我希望那些链接保留。

我想用子Div定位每个LI,并改变Li的a = href值 我已经做到了,但我特别不想改变任何Li的a = href值,如果它没有第一个孩子Div。

这是我的代码:

$(window).on("resize", function() {
        $(function() {
            if ($(window).width() <= 900 & $( 'div.menu-main-menu-container > ul.main-menu > li.menu-item > a' ).attr( 'href' ) != "#") {
                $( 'div.menu-main-menu-container > ul.main-menu > li.menu-item > a' ).each(function() {
                    var old = $(this).attr( 'href' );
                    $(this).attr( 'data-href', old);
                    $(this).attr( 'href', '#');
                });
            } if ($(window).width() > 900 & $( 'div.menu-main-menu-container >     ul.main-menu > li.menu-item > a' ).attr( 'href' ) == "#") {
                $( 'div.menu-main-menu-container > ul.main-menu > li.menu-item >     a' ).each(function() {
                    var old = $(this).attr( 'data-href' );
                    $(this).attr( 'href', old);
                });
            }
        });
}).resize();

3 个答案:

答案 0 :(得分:0)

你可以这样做:

if ($('li').children().length > 0)
{
    //do something
}

或者:

if ($('li').children().length == 0)
{
    //do something else
}

此外,您似乎没有循环播放(否则我会建议使用$(this))。确实是选择这些元素的更好方法。你有这么长的选择器字符串(即&#39; div.menu-main-menu-container&gt; ul.main-menu&gt; li.menu-item&gt; a&#39;)你可以减少到一个简单的独特类或id。

答案 1 :(得分:0)

您只能使用jQuery has方法选择带有子div的li,例如:

$('div.menu-main-menu-container > ul.main-menu > li.menu-item').has('div').children('a').....

答案 2 :(得分:0)

您可以选择li第一个元素div,如下所示:

$('li > div:first').each(function(){
  $(this).parent('li')
  ......
});

希望这可以帮助你:)