0

在下面的代码中,如何根据超链接的值删除 li?

<ul class="clean menu sub">
    <li>
        <a cat="tech" class="sec_net_1" href="javascript:void(0);" name="&amp;lid=choose_category_internet_fios" rel="1">FiOS Internet</a>
    </li>
    <li>
        <a cat="tech" class="sec_net_1" href="javascript:void(0);" name="&amp;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="&amp;lid=choose_category_internet_dialup" rel="1">Dial-up</a>
    </li>
</ul>

我得到了变量中超链接的值。现在根据值,其他 2 li 应该被删除。我们如何使用 mootools 实现这一目标?

现在如果我得到 flag="Dial-up",其他 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="&amp;lid=choose_category_internet_dialup" rel="1">Dial-up</a>
    </li>
</ul>

在这里,我从服务器获取 Flag 的值。

4

1 回答 1

0

如果您可以利用链接名称,则解决方案是一行:

http://jsfiddle.net/5axJc/

$$("ul.menu :not(a[name='&li=choose_category_internet_dialup']) !> li").destroy()

对集合调用destroy(我会在生产代码中使用document.getElements)将对其中的每个元素调用您的方法。

在选择表达式中有几个深奥的选择器,也许值得更深入的解释:

  • ul.menu 是一个普通的基于类的选择器
  • :not(a[name='&li=choose_category_internet_dialup'])根据与值匹配的属性
    选择链接name:not()
  • !> 是父选择器

因此您可以将选择器读取为:

选择所有 li 到菜单 ul 中,它们是名称不是您想要的值的锚的父亲。

编辑

要仅选择作为搜索对象的父母的 li,只需使用 选择它, ul.sub a[name='&lid=choose_category_internet_fios'] !> li并在此基础上选择所有兄弟姐妹~ li。结果是这样的。

$$("ul.sub a[name='&lid=choose_category_internet_fios'] !> li ~ li").dispose()

请注意,我们已经摆脱了 :not() 选择器。对我来说,这是一种更线性的方式来完成任务。

于 2013-03-12T06:47:12.410 回答