在下面的代码中如何根据超链接的值删除li?
<ul class="clean menu sub">
<li>
<a cat="tech" class="sec_net_1" href="javascript:void(0);" name="&lid=choose_category_internet_fios" rel="1">FiOS Internet</a>
</li>
<li>
<a cat="tech" class="sec_net_1" href="javascript:void(0);" name="&lid=choose_category_internet_hsi" rel="1">High Speed Internet</a>
</li>
<li class="last" style="margin-bottom:7px;">
<a cat="tech" class="sec_net_1" href="javascript:void(0);" name="&lid=choose_category_internet_dialup" rel="1">Dial-up</a>
</li>
</ul>
我得到变量中超链接的值。现在基于其他2 li的值应该被删除。我们如何使用mootools实现这一目标?
现在,如果我得到flag =“拨号”,则应删除其他2个li,代码应如下所示:
<ul class="clean menu sub">
<li class="last" style="margin-bottom:7px;">
<a cat="tech" class="sec_net_1" href="javascript:void(0);" name="&lid=choose_category_internet_dialup" rel="1">Dial-up</a>
</li>
</ul>
这里我从服务器获取Flag的值。
答案 0 :(得分:0)
如果您可以利用链接名称,解决方案就是一行:
$$("ul.menu :not(a[name='&li=choose_category_internet_dialup']) !> li").destroy()
在集合上调用destroy(我会在生产代码中使用document.getElements)将在其中的每个元素上调用您的方法。
在选择表达式中有几个深奥的选择器,可能值得深入解释:
name
属性选择链接
因此您可以将选择器读为:
选择菜单ul中的所有li,它们是名称不是您想要的值的锚的父亲。
修改强>
要仅选择作为搜索者的父母的li,只需选择它即可
:not()
并以此为基础
选择ul.sub a[name='&lid=choose_category_internet_fios'] !> li
的所有兄弟姐妹。结果是这样的。
~ li
注意我们已经摆脱了:not()选择器。对我来说,这是完成任务的一种更线性的方式。