jQuery .each函数帮助

Sam*_*uel 1 jquery jquery-selectors

我想知道我在这里做错了什么.调用重置按钮时,第一个函数运行正常,但由于某种原因,第二个函数没有做任何事情.表单确实被重置但第二个警报永远不会弹出,警告类永远不会被删除.谢谢你的帮助!

$('#registration :reset').click(function() {
    alert("reset was clicked");
    $('#registration :text').each(function() {
        if ($(this).hasclass('warn')) {
            $(this).removeClass('warn');
        }

        if (!$(this).hasclass('texta')) {
            $(this).addClass('texta');
        }

        alert("value");
    });
});
Run Code Online (Sandbox Code Playgroud)

Fré*_*idi 5

Javascript语言区分大小写.该hasclass()方法不存在,但hasClass()确实存在.你应该写:

$('#registration :text').each(function() {
    if ($(this).hasClass('warn')) {
        $(this).removeClass('warn');
    }

    if (!$(this).hasClass('texta')) {
        $(this).addClass('texta');
    }

    alert("value");
});
Run Code Online (Sandbox Code Playgroud)

也就是说,你通常不需要hasClass()addClass()removeClass()之前调用,因为addClass()如果元素已经拥有你指定的类,则不会添加副本,并且removeClass()不会删除元素没有的类.所以你可以简单地写:

$('#registration :text').each(function() {
    $(this).removeClass('warn');
    $(this).addClass('texta');
    alert("value");
});
Run Code Online (Sandbox Code Playgroud)

或者,使用像@deceze这样的方法链接:

$('#registration :text').each(function() {
    $(this).removeClass('warn').addClass('texta');
    alert("value");
});
Run Code Online (Sandbox Code Playgroud)