[英]JQuery Class Selector still firing after removeClass
我正在創建一個通過AJAX發送快速數據庫時間戳的小投票機制。
一系列具有“投票”類別的按鈕是投票的觸發器,而下面的文本顯示該特定項目有多少“投票”。
從click事件運行AJAX方法后,我刪除了“vote”類,使得該項不能有多個。 但是我的問題是,即使刪除了類,觸發器仍然可以觸發並增加投票數。
這是元素的HTML:
<div class="points">
<img class="vote" src="images/up.gif" alt="'.$idea['id'].'">
<p class="vote-'.$idea['id'].'">'.$points.' Points</p>
</div>
這是jQuery調用:
$('.vote').click(function(){
var iID = $(this).attr('alt');
var typeString = "id="+iID;
$.ajax({
type: "POST",
url:"vote.php",
data: typeString,
success: function (txt){
$('.vote-'+iID).html('<p>'+txt+' Points</p>');
}
});
$(this).attr('src', 'images/voted.gif');
$(this).removeClass('vote');
});
您將事件處理程序附加到DOM元素,並保持不變。 你也可以
一個。 set .data('triggered', 1)
就像這樣:
if ( !$(this).data('triggered') ) {
// do code
$(this).data('triggered', 1);
}
灣
if ( $(this).hasClass('vote') ) {
// do code
}
C。 使用.live而不是.click,例如$('.foo').live('click', fn)
d。 在調用代碼后手動刪除事件處理程序, $(this).unbind('click')
作為刪除類位后的最后一行
DOM元素的class
用於引用它,而不是改變它的Event綁定行為。
要刪除DOM元素,請單擊事件使用unbind 。
選擇器僅在首次調用時進行一次評估。 每次觸發事件時都不會重新評估它以檢查哪些元素匹配; 那會很慢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.