没有类的元素上的jquery click事件

时间:2012-11-06 13:46:24

标签: javascript jquery

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

请勿处理:

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

PROCESS:

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

尝试了这个没有成功:

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

4 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

$('a.download').click(function(e){
    e.preventDefault();
    if($(this).hasClass('disablelink')){
        return;
    }else{
      //other stuff;
    }
});

为什么不检查点击锚点的时间,以及它是否有返回的类并且什么都不做,我想这将是更易读的代码。

答案 2 :(得分:0)

你可以这样:

$("a.download").click(function(e) {
    if($(this).hasClass("disablelink")) {
        return false;
    }
    // Normal code
    alert('in');
    e.preventDefault();
});

答案 3 :(得分:0)

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

其次,你应该只检查点击处理程序中的那个类,如下所示:

$("a.download").click(function (e) {
    if($(this).hasClass('disablelink')){
       e.preventDefault();
       // link is disabled
    }else{
       alert('in');
       // link is active
    } 
});