我为响应式网站创建了一个响应式子菜单,其活动等于或小于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”子项的链接,实际条款,没有子菜单。
谢谢!
答案 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")
答案 2 :(得分:1)
jQuery兄弟姐妹不工作?
它正在发挥作用。然而它总是评估为jQuery包装器对象,即使它没有匹配,并且该值是真实的,所以你的if-block总是执行。检查.length
- 属性是否为0
。
我将它设置为jQuery删除Parent List Item的链接并在onClick上显示子菜单。
绝对没有理由删除href
属性。要阻止链接,即使您点击(“激活”)它,请在click
事件处理程序中调用preventDefault()
on the event object!