0

I'm using SIFR 3.0 in combination with suckerfish popup menus. I only want to SIFR the top level li's and not apply the effect to the nested ones. I'm also using WordPress, so restructuring the menu, like wrapping the parent in a <div> or other object is too hard (I'm still figuring out the basics of WordPress).

Is there a way to turn SIFR ON for ul#menu li but OFF for ul#menu li li ?

Other things I've tried that haven't worked is applying a class or id to the parent <li class="top-level"> or <li id="top-level">--that didn't stop the SIFR, it still grabbed the children.

Thanks so much for the help.

4

3 回答 3

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。

于 2009-04-12T15:23:03.423 回答
0

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

ul#menu > li

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

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

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

您可以将其放在条件注释中。

于 2009-04-10T19:41:48.170 回答
-1

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

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

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

于 2009-04-11T09:32:52.960 回答