0

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

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

父级正确地擦除了它的链接,但它不会在父级处停止。有任何想法吗?

在此先感谢,丹

编辑

这是与 Wordpress 一起使用的wp_list_pages(),它将显示所有帖子类别及其相关的永久链接。

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

JSFIDDLE

4

4 回答 4

3

检查这个

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

演示:小提琴

或更好

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

演示:小提琴

于 2013-03-06T15:16:25.843 回答
1

您只需要更改选择器以仅选择具有子元素的元素。假设相关的孩子是更多li的,你会使用:

$('#sidebarLeft li.page_item:has(>li)').each(function(){
    $(this).removeAttr('href');
});
于 2013-03-06T15:24:20.047 回答
1

$('#sidebarLeft > li.page_item') 听起来您可能需要更严格的选择器。

于 2013-03-06T15:24:43.873 回答
1
$('#sidebarLeft  li.page_item a').not('ul li ul a').attr('href','#');

这是一个使用背景颜色演示的小提琴。

于 2013-03-06T15:40:25.353 回答