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)
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)