我希望每当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
属性。还是相反?
有人能引导我走向光明吗?
答案 0 :(得分:10)
[href]
表示存在一个href属性,无论它具有哪个值(如果有)。
正如pimvdb正确指出的那样,你可以使用
a[href]:not([href^="mailto\\:"], [href$="\\#"])
这意味着“具有任何href属性的所有元素,除了那些href属性以mailto开头的那些元素,或以#
结尾的元素