a:不是(a:不是([href]))选择器

时间:2012-07-26 19:49:56

标签: jquery javascript-events

我希望每当href属性时,某个操作与锚标记的click事件相关联:

  • 不以mailto:
  • 开头
  • 不以#
  • 结尾
  • 包含任何值,包括空

所以我在尝试这段代码:

<a href="example.com">example.com</a>
<a href="mailto:someone@www.example.com">Someone</a>
<a href="thepage#">The Page</a>
<a>This does nothing</a>

<script type="text/javascript">
    $(document).on('click', 'a:not([href^="mailto\\:"], [href$="\\#"], [href])', myFunction);
</script>

它不起作用。但令我失望的是:

$(document).on('click', 'a:not([href^="mailto\\:"], [href$="\\#"], a:not([href]))', myFunction);

但我不明白怎么做。注意内部:not()。据我了解,[href]表示没有href属性。还是相反?

有人能引导我走向光明吗?

1 个答案:

答案 0 :(得分:10)

[href]表示存在一个href属性,无论它具有哪个值(如果有)。

正如pimvdb正确指出的那样,你可以使用

a[href]:not([href^="mailto\\:"], [href$="\\#"])

这意味着“具有任何href属性的所有元素,除了那些href属性以mailto开头的那些元素,或以#

结尾的元素