2014-03-26 64 views
0

我不清楚我如何刪除ajax成功函數添加的類。我有這個代碼:jQuery:刪除ajax成功添加的類

$.ajax({ 
    dataType: "json", 
    [...] 
    success:function(data) { 
     for (var i = 0; i < data.length; i++) { 
      $('[name="'+data[i]+'"]').addClass('tmvc_err'); 
     } 
    }, 
}); 

它基本上添加一個紅色的邊框到那些不通過我的PHP驗證腳本的領域。 現在,我試着在更改事件後刪除該紅色邊框(或更好的嘗試刪除class .tmvc_err)。這是行不通的:

$(".tmvc_err").on('change', function() { 
    $(this).removeClass('tmvc_err'); 
}); 

它準備一個文件中,所以我想的問題是,作爲類是通過AJAX添加的文檔已經準備好後,它沒有找到這個類。那麼,我該如何開火呢?

回答

2

嘗試使用event delegation在這裏,因爲你的類已動態添加:

事件代表團允許我們附加一個單一的事件偵聽器,到 父元素,將火爲選擇匹配的孩子, 這些孩子現在是否存在或未來是否添加。

$("body").on('change','.tmvc_err', function() { 
    $(this).removeClass('tmvc_err'); 
}); 
1

如果動態添加,你需要事件代表團 -

$(document.body).on('change','.tmvc_err', function() { 
    $(this).removeClass('tmvc_err'); 
}); 
2

你需要event delegation動態添加元素

$(document).on('change', ".tmvc_err", function() { 
    $(this).removeClass('tmvc_err'); 
}); 

委派事件

委派事件具有有利於他們處理事件從 後來添加到文檔的後代元素。通過 採摘這是保證出席 委派的事件處理程序連接時的元素,你可以使用委派事件 避免需要經常重視和移除事件處理程序,jQuery docs