2012-10-20 55 views
3

我有問題解除綁定事件從我分配一個事件使用on();無法刪除on()上的事件;

這裏是我的JS:

$(document).on('click','.reply-indicator a', function(e){ 
    e.preventDefault(); 
    var commentid = $(this).data('commentid'); 
    $.ajax({ 
     type: 'POST', 
     url: '?category=getreplies', 
     data:{ 
      "commentid" : commentid 
     }, 
     success: function(data){ 
      $('.'+commentid+'subcomments').append(data); 
     } 
    }); 
    return false; 
}); 

我用盡了一切我能想到的關斷,以我甚至分配一個ID屬性每個迭代每個元素是能夠靶向元素 刪除click事件元素特別是因爲有以下幾種:

$(document).off('click','#'+commentid+'indicator a'); 
$('#'+commentid+'indicator a').off(); 

$('#'+commentid+'indicator a').off('click'); 

$('#'+commentid+'indicator a').unbind('click'); 

,但它不會鬆動的情況下在callbackFunction參數或者甚至當我嘗試把這個代碼Ajax請求之前,但回調函數之後,事件仍在工作。我是否試圖正確定位它?

+1

[有一個很難複製這個問題(元素http://jsfiddle.net/jN7LG/) – Ohgodwhy

+2

'on'僅將事件綁定到您選擇的元素(在本例中爲文檔)。並且只有一個事件處理程序完成。這就是爲什麼'off'不能在這裏工作。 – nhahtdh

+2

@Ohgodwhy:我相信這裏的問題是不同的。他試圖刪除特定元素上的點擊 - 但是沒有任何東西可以刪除,因爲沒有要刪除的事件處理程序。 – nhahtdh

回答

3

嘗試添加類到你想要的委託,然後當你想刪除某些內容只刪除類

//add delegate 
$(document).on('click','.reply-indicator a.onclick', function(e){ 
... 
//remove the class from the element so it no loger matches the delegate selector 
$('#'+commentid+'indicator a').removeClass('onclick'); 

http://jsfiddle.net/jN7LG/2/