jQuery:删除由ajax成功添加的类

时间:2014-03-26 09:08:57

标签: javascript jquery ajax

我不清楚如何删除由ajax成功函数添加的类。我有这段代码:

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

它基本上为那些没有通过我的php验证脚本的字段添加了红色边框。 现在,我试着在更改事件后删除该红色边框(或更好,尝试删除类.tmvc_err)。这不起作用:

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

它已准备就绪,所以我猜问题是,在文档准备就绪后,由ajax添加类,它找不到该类。那么,我怎么解雇呢?

3 个答案:

答案 0 :(得分:2)

动态添加元素需要event delegation

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

委派活动

  

委派事件的优势在于它们可以处理来自的事件   稍后添加到文档中的后代元素。通过   选择一个保证在当时存在的元素   委托事件处理程序附加,您可以使用委托事件   避免经常附加和删除事件处理程序,jQuery docs

答案 1 :(得分:2)

尝试在此处使用 event delegation ,因为您的课程已动态添加:

  

事件委托允许我们将单个事件监听器附加到   父元素,将为匹配选择器的所有子项触发,   这些孩子现在是否存在,或将来是否存在。

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

答案 2 :(得分:1)

如果动态添加,则需要事件委派 -

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