0

我为响应式网站创建了一个响应式子菜单,该网站在等于或小于 768 像素时处于活动状态。我将它设置为 jQuery 删除父列表项的链接并显示子菜单 onClick 的位置。

问题是,有一个没有孩子的父母,我试图只删除有孩子的父母元素的链接(href)。但是,我什至在 If 语句中应用了它,这样如果它没有子链接,它就不会删除父链接,这是行不通的。所以我尝试了兄弟姐妹,我认为这更有意义。但它仍然不是这样。

这是我的jQuery:

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

您可能会在这里看到一个示例:http: //stlredtails.com/construction/

编辑:联系链接是没有“ul”子项的链接,实用术语,没有子菜单。

谢谢!

4

3 回答 3

2

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

jQuery(".navigation > ul > li > a").each( function() {
    if(jQuery(this).siblings("ul").length) {
        jQuery(this).removeAttr("href");
    }
});
于 2012-12-22T20:18:35.117 回答
1

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

尝试类似:

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

jQuery:空文档

jQuery:父文档

于 2012-12-22T20:13:48.770 回答
1

jQuery 兄弟姐妹不工作?

这是工作。然而,即使它不匹配任何内容,它也总是评估为 jQuery 包装器对象,并且该值是真实的,因此您的 if 块总是执行。检查.length-property 是否为 not 0

我将它设置为 jQuery 删除父列表项的链接并显示子菜单 onClick 的位置。

There is absolutely no reason to remove the href attribute. To prevent following the link even if you clicked ("activated") it, call preventDefault() on the event object in the click event handler!

于 2012-12-22T20:32:56.997 回答