【问题标题】:SIFR'ing <LI> parents onlySIFR'ing <LI> 仅限父母
【发布时间】:2010-10-18 19:45:05
【问题描述】:

我将 SIFR 3.0 与吸盘鱼弹出菜单结合使用。我只想对顶级 li 进行 SIFR,而不是将效果应用于嵌套的。我也在使用 WordPress,所以重组菜单,比如将父级包装在

或其他对象中太难了(我仍在弄清楚 WordPress 的基础知识)。

有没有办法转SIFR ON for ul#menu li 但是 ul#menu li li 关闭?

我尝试过的其他没有奏效的事情是将类或 id 应用于父级

  • ——没有停止 SIFR,它仍然抓住了孩子们。

    非常感谢您的帮助。

  • 【问题讨论】:

      标签: css css-selectors sifr


      【解决方案1】:

      我假设你的 HTML 结构是这样的:

      <ul id="menu">
        <li>
          <a href="/">My link</a>
          <ul>
            <li>My submenu item</li>
          </ul>
        </li>
      </ul>
      

      当您替换ul#menu li 时,您将替换&lt;li&gt; 元素的全部内容。不幸的是,这也包括子菜单。解决方法是只替换链接,但注意不能直接替换&lt;a&gt;元素。

      因此:

      <ul id="menu">
        <li>
          <span><a href="/">My link</a></span>
          <ul>
            <li>My submenu item</li>
          </ul>
        </li>
      </ul>
      

      并替换ul#menu &gt; li span

      最后还有一个问题,如果事件必须通过 sIFR,Suckerfish 菜单是否真的有效。我怀疑它不会,这意味着你最好不要在这里使用 sIFR。

      【讨论】:

      • 我试过这个,(但使用
        而不是 ),它工作正常。困难的事情是将代码放入 WordPress。
      【解决方案2】:

      如果您下载未压缩的 sifr 源代码,并且还拥有 jQuery 或擅长使用 javascript,您可能可以在 sifr 代码的第 491 行附近添加条件

      if ($(node).parent().parent().parent().attr('id', 'menu')) {continue;}
      

      我不擅长 jQuery,我也不确定 sifr 运行的节点是什么类型的对象,但理论上像上面这样的东西应该可以让你想要的东西成为可能。

      【讨论】:

        【解决方案3】:

        这可以通过 CSS 子选择器来完成:

        ul#menu > li
        

        这只会选择li 的直接子元素ul#menu。这应该适用于所有符合标准的浏览器和 IE7+。

        对于 IE6,你可以做一些 hack 来伪造它,虽然我更喜欢使用 jQuery 来弥补它不支持的选择器:

        $('ul#menu > li').css({ ... });
        

        您可以将其放置在条件 cmets 中。

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-12
        • 1970-01-01
        • 2021-05-30
        • 1970-01-01
        • 1970-01-01
        • 2021-03-25
        • 1970-01-01
        相关资源
        最近更新 更多