【问题标题】:jQuery Siblings Not Working?jQuery 兄弟姐妹不工作?
【发布时间】:2012-12-23 04:32:56
【问题描述】:

我为响应式网站创建了一个响应式子菜单,该网站在等于或小于 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/

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

谢谢!

【问题讨论】:

    标签: javascript jquery html css responsive-design


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      尝试类似:

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

      jQuery :empty documentation

      jQuery :parent documentation

      【讨论】:

        【解决方案3】:

        jQuery 兄弟姐妹不起作用?

        它正在工作。然而,它总是评估为一个 jQuery 包装器 object,即使它不匹配任何内容,并且该值是真实的,因此您的 if 块总是执行。检查.length-属性是否不是0。

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

        绝对没有理由删除href 属性。为防止即使您点击(“激活”)该链接也继续关注该链接,请在 click 事件处理程序中调用 preventDefault() on the event object!

        【讨论】:

          猜你喜欢
          • 2014-03-30
          • 1970-01-01
          • 2015-02-02
          • 1970-01-01
          • 2019-05-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-09
          相关资源
          最近更新 更多