jQuery:将onClick绑定到指向其他目标= target的页面的所有锚点

时间:2015-10-29 16:59:36

标签: javascript jquery html

每当用户点击未在新窗口中打开且具有a属性的任何href时,我想调用自定义函数(或只是执行某些逻辑) 非空不以# 开头且没有javascript:

基本上我需要所有那些链接,如果点击将导致当前页面被卸载。但是应排除所有其他链接,例如#point1javascript:alert('');等(因为如果点击,用户仍将保留在页面上)。什么是适当的jQuery?

理想情况下应与旧版jQuery兼容 - 版本1.7.2

3 个答案:

答案 0 :(得分:3)

试试这个:

$(document).on('click', 'a[href][href!=""]:not([href^="#"],[href^="javascript:"],[target="_blank"])', function() {
    // do something
})

但是,你必须考虑到它不是一个非常易读的代码来维护。传递过滤函数(如@Rory McCrossan答案)可以更具可读性。

请参阅Fiddle

P.S您是否考虑过使用beforeunload事件?

答案 1 :(得分:2)

由于这是一套非常复杂的规则,您可以使用filter()

$('a').filter(function() {
    var href = $(this).attr('href');
    return href != '' && href != '#someanchor' && this.target != '_blank';
}).click(function() {
    // do your thing here...
});

答案 2 :(得分:0)

您可以使用jQuery的.not()方法。请参阅:http://api.jquery.com/not/

$('a')
   .not('[target=_blank]')
   .not('[href=""]')
   .not('[href=#someanchor]')
   .on('click', function() {
      //code here
   });