2014-01-16 44 views
0

我想在類似的按鈕上添加點擊事件。點擊時,我想添加一個名爲active的類。當元素有這個類時,我不想點擊事件觸發。JQuery沒有選擇動態添加的類

爲什麼這個日誌「點擊!」每一次,而不是隻有第一次?在運行時

http://jsfiddle.net/M5MRQ/

<div class="vote"> 
    <a class="vUp">Like me</a> 
</div> 

$(".rate .vUp").not(".active").click(function(){ 
    console.log("click!"); 
    $(this).addClass("active"); 
    return false; 
}); 

回答

1

那是因爲,你的DOM的變化,但你的JS沒有。你需要一個活法,或更好,刪除點擊處理程序上的按鈕是這樣的:

$(".rate .vUp").click(function(event){ 
    console.log("click!"); 
    $(this).addClass("active"); 
    $(event.currentTarget).unbind("click"); 
    event.preventDefault(); 
    return false; 
}); 

在這裏看到http://jsfiddle.net/M5MRQ/7/

1

您可以點擊簡單地解除綁定事件中使用.off()

$(".rate .vUp").click(function(){ 
    console.log("click!"); 
    $(this).addClass("active"); 

    //Unbind event 
    $(this).off("click"); 
    return false; 
}); 

DEMO

0

可以使用hasClass()方法以及獲得工作示例:

$(".rate .vUp").click(function(){ 
    if (!$(this).hasClass("active")) {   
     console.log("click!"); 
     $(this).addClass("active"); 
     event.preventDefault(); 
     return false; 
    } 
}); 

看到http://jsfiddle.net/M5MRQ/9/

1

嘗試使用下面的代碼:

$(".rate .vUp").click(function(){ 
    if($(this).hasClass("active")){ 
     return false; 
    }else{ 
     console.log("click!"); 
     $(this).addClass("active"); 
    }    
});