【发布时间】:2010-10-18 19:45:05
【问题描述】:
我将 SIFR 3.0 与吸盘鱼弹出菜单结合使用。我只想对顶级 li 进行 SIFR,而不是将效果应用于嵌套的。我也在使用 WordPress,所以重组菜单,比如将父级包装在
有没有办法转SIFR ON for ul#menu li 但是 ul#menu li li 关闭?
我尝试过的其他没有奏效的事情是将类或 id 应用于父级
非常感谢您的帮助。
【问题讨论】:
标签: css css-selectors sifr
我将 SIFR 3.0 与吸盘鱼弹出菜单结合使用。我只想对顶级 li 进行 SIFR,而不是将效果应用于嵌套的。我也在使用 WordPress,所以重组菜单,比如将父级包装在
有没有办法转SIFR ON for ul#menu li 但是 ul#menu li li 关闭?
我尝试过的其他没有奏效的事情是将类或 id 应用于父级
非常感谢您的帮助。
【问题讨论】:
标签: css css-selectors sifr
我假设你的 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。
【讨论】:
如果您下载未压缩的 sifr 源代码,并且还拥有 jQuery 或擅长使用 javascript,您可能可以在 sifr 代码的第 491 行附近添加条件
if ($(node).parent().parent().parent().attr('id', 'menu')) {continue;}
我不擅长 jQuery,我也不确定 sifr 运行的节点是什么类型的对象,但理论上像上面这样的东西应该可以让你想要的东西成为可能。
【讨论】:
这可以通过 CSS 子选择器来完成:
ul#menu > li
这只会选择li 的直接子元素ul#menu。这应该适用于所有符合标准的浏览器和 IE7+。
对于 IE6,你可以做一些 hack 来伪造它,虽然我更喜欢使用 jQuery 来弥补它不支持的选择器:
$('ul#menu > li').css({ ... });
您可以将其放置在条件 cmets 中。
【讨论】: