SIFR'ing <li>仅限父母</li>

时间:2009-04-10 19:10:32

标签: css css-selectors sifr

我正在将SIFR 3.0与suckerfish弹出菜单结合使用。我只希望SIFR顶级li并且不将效果应用于嵌套的。我也在使用WordPress,因此重新构建菜单,就像在&lt; div&gt;中包装父级一样。或者其他对象太难了(我还在弄清楚WordPress的基础知识)。

有没有办法打开SIFR 打开ul#menu li 但是关于ul#menu li li?

我尝试过的其他没有效果的事情是将类或ID应用于父级&lt; li class =“top-level”&gt;或者&lt; li id =“top-level”&gt; - 没有阻止SIFR,它仍然抓住了孩子们。

非常感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

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

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

当您替换ul#menu li时,您将替换<li>元素的全部内容。不幸的是,这还包括子菜单。解决方案是仅替换链接,但请注意,您无法直接替换<a>元素。

因此:

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

并替换ul#menu > li span

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

答案 1 :(得分:0)

这可以使用CSS子选择器完成:

ul#menu > li

这将仅选择li的直接子项ul#menu元素。这应该适用于所有标准的兼容浏览器和IE7 +。

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

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

您可以将其置于条件评论中。

答案 2 :(得分:-1)

如果您下载未压缩的sifr源代码,并且还有jQuery或者javascript很好,那么您可以在sifr代码的第491行附近添加条件

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

我对jQuery并不擅长,而且我也不确定sifr所运行的节点是什么类型的对象,但理论上,上面的内容应该是你想要的。