jQuery兄弟姐妹不工作?

时间:2012-12-22 19:45:17

标签: javascript jquery html css responsive-design

我为响应式网站创建了一个响应式子菜单,其活动等于或小于768px。我将它设置为jQuery删除Parent List Item的链接并在onClick上显示子菜单。

问题是,有一个没有孩子的家长,我试图只删除有孩子的父元素的链接(href)。但是,我甚至在If语句中应用它,因此如果它没有子节点,它就不会删除父链接,这不起作用。所以我试过兄弟姐妹,我认为这会更有意义。但它仍然没有表现出来。

这是我的jQuery:

    if (jQuery(".navigation > ul > li > a").siblings("ul")){
        jQuery(".navigation > ul > li > a").removeAttr("href");
    };

您可以在此处看到一个示例:http://stlredtails.com/construction/

编辑:联系人链接是没有“ul”子项的链接,实际条款,没有子菜单。

谢谢!

3 个答案:

答案 0 :(得分:2)

if语句始终返回true,并且以下命令从所有匹配的元素中删除href属性。您将需要遍历匹配的锚点并为每个锚点处理if语句。

jQuery(".navigation > ul > li > a").each( function() {
    if(jQuery(this).siblings("ul").length) {
        jQuery(this).removeAttr("href");
    }
});

答案 1 :(得分:1)

我不确定我是否理解你的要求,但听起来你可能需要jQuery的:empty和/或:parent选择器。

尝试类似:

$(".navigation > ul:parent > li > a")

jQuery :empty documentation

jQuery :parent documentation

答案 2 :(得分:1)

  

jQuery兄弟姐妹不工作?

它正在发挥作用。然而它总是评估为jQuery包装器对象,即使它没有匹配,并且该值是真实的,所以你的if-block总是执行。检查.length - 属性是否为0

  

我将它设置为jQuery删除Parent List Item的链接并在onClick上显示子菜单。

绝对没有理由删除href属性。要阻止链接,即使您点击(“激活”)它,请在click事件处理程序中调用preventDefault() on the event object