如何根据mootools的值删除超链接?

时间:2013-03-12 05:19:31

标签: mootools

在下面的代码中如何根据超链接的值删除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 =“拨号”,则应删除其他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的值。

1 个答案:

答案 0 :(得分:0)

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

http://jsfiddle.net/5axJc/

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

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

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

  • ul.menu是一个基于普通类的选择器
  • :否(A [名= '&安培; LI = choose_category_internet_dialup'])
    根据{{​​1}}匹配值
  • name属性选择链接
  • &GT!;是父选择器

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

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

修改

要仅选择作为搜索者的父母的li,只需选择它即可 :not()并以此为基础 选择ul.sub a[name='&lid=choose_category_internet_fios'] !> li的所有兄弟姐妹。结果是这样的。

~ li

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