jquery 如何使用:not()selector在单击超链接时执行操作

dgenwo3n  于 2022-11-22  发布在  jQuery
关注(0)|答案(4)|浏览(140)

我希望除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>

我想要相同的功能,但是使用:not()选择器,因为它看起来更优雅。

pgvzfuti

pgvzfuti1#

相当 直接 :

$('a:not([href^="mailto"])').on(...);

中 的 每 一 个

$('a').not('[href^="mailto"]').on(...);

格式
请 查看 文档 :

如果 你 的 页面 上 有 很多 链接 , 你 一定 要 选择 * event delegation * , 就 像 Utkanos 在 his answer 中 建议 的 那样 。

a14dhokn

a14dhokn2#

与其将事件附加到每个链接,不如委托它。这也使得过滤哪些触发事件,哪些不触发事件变得非常容易。

$('body').on('click', 'a:not([href^=mailto])', function(evt) {...
baubqpgj

baubqpgj3#

$('a').not('a[href^="mailto"]').on('click', function () {
        theAction();
});
xesrikrc

xesrikrc4#

Felix解决方案很好,否则,如果其他链路都是从http/https协议开始的绝对链路,则只需尝试

$('a[href^="http"]').on('click', function () {
    theAction();
});

相关问题