2

我如何确保这个 href 元素会触发“click”事件,除非它没有“disablelink”类。

不要处理:

<a class="iconGear download disablelink" href="#">Download</a>

过程:

<a class="iconGear download" href="#">Download</a>

试过这个没有成功:

    $("a.download").not(".disablelink").click(function (e) {
        alert('in');
        e.preventDefault();
    });
4

4 回答 4

6

这应该有效:

$("a.download:not('.disablelink')").click(function (e) {
    alert('in');
    e.preventDefault();
});

如果disablelink类是动态添加的:

$(document).on('click', "a.download:not('.disablelink')", function (e) {
    alert('in');
    e.preventDefault();
});

检查这个演示:http: //jsfiddle.net/d3rXr/1/

于 2012-11-06T13:50:39.513 回答
0
$('a.download').click(function(e){
    e.preventDefault();
    if($(this).hasClass('disablelink')){
        return;
    }else{
      //other stuff;
    }
});

为什么不检查单击锚点的时间,以及它是否具有返回的类并且什么也不做,我猜这将是更具可读性的代码。

于 2012-11-06T13:48:57.683 回答
0

你可以这样:

$("a.download").click(function(e) {
    if($(this).hasClass("disablelink")) {
        return false;
    }
    // Normal code
    alert('in');
    e.preventDefault();
});
于 2012-11-06T13:49:21.457 回答
0

首先,这可能不起作用,因为某些链接已动态添加了 disablelink,并且在它们已经绑定了点击处理程序之后。

其次,您应该只在点击处理程序中检查该类,如下所示:

$("a.download").click(function (e) {
    if($(this).hasClass('disablelink')){
       e.preventDefault();
       // link is disabled
    }else{
       alert('in');
       // link is active
    } 
});
于 2012-11-06T13:49:36.390 回答