停止影响孩子的jQuery

时间:2013-03-06 15:15:03

标签: jquery

我在点击菜单上做了一个简单的下拉列表,似乎无法解决如何停止影响子链接的脚本。

$('#sidebarLeft li.page_item').each(function(){
    if ( $(this).children().length > 0 ) {
        $('a', this).attr('href','#');
    }
});

父母正确地将其链接擦除但是它不会停留在父母身上。有什么想法吗?

先谢谢,Dan

修改

这适用于Wordpress wp_list_pages(),它会显示所有帖子类别及其相关的永久链接。

这个想法是为了防止父永久链接有任何href,所以我能想到的最好的方法就是将永久链接换成'#'

JSFIDDLE

4 个答案:

答案 0 :(得分:3)

检查

$('#sidebarLeft li.page_item').each(function(){
    if ( $(this).children('ul.children').length) {
        $(this).children('a').attr('href','#');
    }
});

演示:Fiddle

或更好

$('#sidebarLeft li.page_item:has(> ul.children)').each(function(){
    $(this).children('a').attr('href','#');
});

演示:Fiddle

答案 1 :(得分:1)

您只需要将选择器更改为仅选择带子项的元素。假设相关的孩子更多li s,你可以使用:

$('#sidebarLeft li.page_item:has(>li)').each(function(){
    $(this).removeAttr('href');
});

答案 2 :(得分:1)

$('#sidebarLeft> li.page_item') 听起来你可能需要一个限制性更强的选择器。

答案 3 :(得分:1)

$('#sidebarLeft  li.page_item a').not('ul li ul a').attr('href','#');

这是使用background-color演示的fiddle