簡體   English   中英

仍然在removeClass之后觸發JQuery類選擇器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM