管理jquery点击事件

时间:2011-05-24 18:10:00

标签: javascript jquery html

我正在捕捉“a”元素中的所有点击:

$("a").click(function(e){....});

我想知道是否可以根据某些变量丢弃某些事件。

例如......

If href="http://www.google.es" then alert("google.es")

else if href="http://www.google.com" then do not handle the event and let the browser do whatever it has to do.

我不知道我是否已经解释得很好......

6 个答案:

答案 0 :(得分:3)

或者,你可以这样做:

$("a[href!='http://www.google.com']").click(function(e) {
    e.preventDefault();
    if(this.getAttribute('href') === 'http://www.google.es') alert("google.es");
});

并且首先不会为google.com生成点击事件。

答案 1 :(得分:0)

$("a").click(function(e){
    e.preventDefault();
    if (this.href == "http://www.google.es/") alert("google.es");
    else if (this.href == "http://www.google.com/") window.location = this.href;
});

小提琴演示:http://jsfiddle.net/maniator/5XdkV/

答案 2 :(得分:0)

在你的函数内部$(this).attr('href')应该给你锚标记的href - 你可以在其余的逻辑中使用它

答案 3 :(得分:0)

对于上面的例子,

$('a[href*=.es]').click(function(e){
e.preventDefault();
});

会使href属性中包含.es的所有链接都不被跟踪,但只留下其他链接。

答案 4 :(得分:0)

$("a").click(function(e) {
   if ($(this).attr('href') == 'http://www.google.es') {
      alert('google.es');
      e.preventDefault();
   }
   // if code gets here, it's ok for the browser to handle normally.
}

答案 5 :(得分:0)

到目前为止发布的所有建议都有效,但它们并不是最灵活的。如果你想匹配任何以google.es作为主机名的链接,我会做这样的事情:

$(document.body).delegate('a', 'click', function(e) {
    var hostname = this.hostname || $(this).prop('href').split('/')[1];

    if (hostname == 'www.google.es') {
        alert('google.es');
        e.preventDefault();
    }
});