在窗口上添加单击事件,但忽略所有以https开头的链接

时间:2014-08-22 11:24:03

标签: javascript jquery

我想在窗口上添加click事件,但要排除所有以https开头的链接。 我尝试了一些东西,但我不知道要走向哪个方向。例如

$(window).not("a[href^='https']").click(function(){
    console.log('Clicked');    
});  

$(window).click(function(evt){
    //somehow check click argument to inspect outgoing URL maybe?        
});    

3 个答案:

答案 0 :(得分:6)

尝试这样的事情:

$(window).on('click', 'a', function(evt){
    if(this.href.indexOf('https') == 0)
        return;

    //other logic here
});  

使用on方法将事件附加到窗口,但只有在与a选择器匹配的元素上执行时才会触发。然后我检查元素href属性以查看它是否以https开头,如果是,我会提前退出。

答案 1 :(得分:3)

您可以使用e.stopPropagation(),因为您在点击链接时阻止了父点击事件

$(window).click(function(){
    console.log('Clicked');    
})
$("a[href^='https']").click(function(e){
    e.stopPropagation();
    console.log('This was a link');    
})

DEMO

答案 2 :(得分:1)

你可以使用window.location.protocol:

$(window).click(function(evt){
    if (window.location.protocol != "https:"){
      alert("clicked but not https");
    }
    else{
      alert("clicked and yes https");
    }
});

jsfiddle here:http://jsfiddle.net/fn4Lk263/