Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何使用:not()选择器在单击超链接时执行操作_Jquery_Javascript Events - Fatal编程技术网

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

Jquery 如何使用:not()选择器在单击超链接时执行操作,jquery,javascript-events,Jquery,Javascript Events,我希望所有的链接点击执行特定的行动,除了mailto链接。我有下面的代码可以正常工作。它首先将函数附加到所有链接,然后将其从mailto链接中删除: 我想要相同的功能,但使用:not选择器,因为它看起来更优雅。怎么样?非常简单: $('a:not([href^="mailto"])').on(...); 或 请查看文档: 不过,如果您的页面上有许多链接,您肯定应该使用事件委派,正如Utkanos在中所建议的那样。Felix解决方案很好,否则,如果其他链接都是以http/https协议开始的绝对

我希望所有的链接点击执行特定的行动,除了mailto链接。我有下面的代码可以正常工作。它首先将函数附加到所有链接,然后将其从mailto链接中删除:


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

非常简单:

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

请查看文档:


不过,如果您的页面上有许多链接,您肯定应该使用事件委派,正如Utkanos在中所建议的那样。

Felix解决方案很好,否则,如果其他链接都是以http/https协议开始的绝对链接,请尝试使用

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

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

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

好的但是没有,也有一些相关的链接是从页面?param=1开始的,很好地了解Jquery中的委托。@Clodoaldo-yeap,不过请注意这是一个JS概念,而不是Jquery。完全可以在本地JS中执行。委托事件在涉及许多元素的情况下效率更高,并且具有自动处理插入到DOM中的适当元素的优势,即使在绑定事件之后也是如此。
$('a').not('a[href^="mailto"]').on('click', function () {
        theAction();
});
$('a[href^="http"]').on('click', function () {
    theAction();
});
$('body').on('click', 'a:not([href^=mailto])', function(evt) {...