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

Clo*_*eto 10 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>
Run Code Online (Sandbox Code Playgroud)

它没有用.但令我沮丧的是,这有效:

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

但我不明白怎么做.注意内在:not().据我所知,这[href]意味着没有href属性.还是相反?

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

Pri*_*orn 10

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

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

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

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

  • 没错,他可能想要一个[href]:而不是(...). (3认同)