如何使用:not()选择器单击超链接时执行操作

Clo*_*eto 0 jquery javascript-events

我希望链接上的所有点击都能执行特定的操作,但mailto链接除外.我有以下代码按预期工作.它首先将该函数附加到所有链接,然后将其从mailto链接中删除:

<a href="http://www.example.com">example.com</a>
<a href="mailto:someone@www.example.com">Someone</a>

<script type="text/javascript">
    $('a').on('click', function () {
        theAction();
    });
    $('a[href^="mailto"]').off('click');
</script>
Run Code Online (Sandbox Code Playgroud)

我想要相同的功能,但使用:not()选择器,因为它看起来更优雅.怎么会这样?

Fel*_*ing 5

很简单:

$('a:not([href^="mailto"])').on(...);
Run Code Online (Sandbox Code Playgroud)

要么

$('a').not('[href^="mailto"]').on(...);
Run Code Online (Sandbox Code Playgroud)

看看文档:


如果您的页面上有很多链接,那么你肯定会选择事件委托,就像Utkanos在他的回答中所说的那样.