我想知道我在这里做错了什么。调用重置按钮时,第一个函数运行正常,但由于某种原因,第二个函数没有做任何事情。表单确实被重置但第二个警报永远不会弹出,警告类永远不会被删除。谢谢你的帮助!
$('#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");
});
});
答案 0 :(得分:5)
Javascript语言为case-sensitive。 hasclass()
方法不存在,但hasClass()确实存在。你应该写:
$('#registration :text').each(function() {
if ($(this).hasClass('warn')) {
$(this).removeClass('warn');
}
if (!$(this).hasClass('texta')) {
$(this).addClass('texta');
}
alert("value");
});
也就是说,您通常不需要在addClass()或removeClass()之前致电hasClass()
,因为addClass()
如果元素已经拥有,则不会添加副本您指定的类,removeClass()
不会删除元素没有的类。所以你可以简单地写一下:
$('#registration :text').each(function() {
$(this).removeClass('warn');
$(this).addClass('texta');
alert("value");
});
或者,使用像@deceze这样的方法链接:
$('#registration :text').each(function() {
$(this).removeClass('warn').addClass('texta');
alert("value");
});
答案 1 :(得分:4)
请改为尝试:
$('#registration :text').removeClass('warn').addClass('texta');
看看jQuery的ze Magik!
几乎每个jQuery方法都适用于 $
函数返回的每个元素。因此,无需遍历所有结果,removeClass
和addClass
将应用于#registration :text
选择器找到的所有元素。此外,在删除或添加类之前无需进行任何检查。如果你要添加类并且元素已经有了类,则没有任何反应。反之亦然,删除课程。
尝试阅读a tutorial,这就是让jQuery如此强大的原因!
答案 2 :(得分:1)
尝试使用live,因为它们会被添加和删除,
我认为当你删除时,他们会被绑定..
$('#registration :reset').live('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");
});
});