10

我希望某个动作与锚标签的点击事件相关联,只要它的href属性:

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

所以我正在尝试这段代码:

<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属性。还是相反?

有人能带领我走向光明吗?

4

1 回答 1

10

[href]意味着无论它具有哪个值(如果有),都存在一个 href 属性。

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

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

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

于 2012-07-26T19:51:45.103 回答