我正在将SIFR 3.0与suckerfish弹出菜单结合使用。我只希望SIFR顶级li并且不将效果应用于嵌套的。我也在使用WordPress,因此重新构建菜单,就像在< div>中包装父级一样。或者其他对象太难了(我还在弄清楚WordPress的基础知识)。
有没有办法打开SIFR 打开ul#menu li 但是关于ul#menu li li?
我尝试过的其他没有效果的事情是将类或ID应用于父级< li class =“top-level”>或者< li id =“top-level”> - 没有阻止SIFR,它仍然抓住了孩子们。
非常感谢您的帮助。
答案 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所运行的节点是什么类型的对象,但理论上,上面的内容应该是你想要的。