2010-12-15 59 views
1

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

$('#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"); 
    }); 
}); 
+3

这可能不会解决问题,但可以缩短到'$('#registration:text')。removeClass('warn')。addClass('texta');'。 – deceze 2010-12-15 06:47:48

+0

你是说整体代码只是第一次运行,或者.each()方法从不运行? – yoda 2010-12-15 06:49:36

+0

因为它实际上*可能*解决了这个问题,所以我添加了这个答案...... :) – deceze 2010-12-15 06:50:25

回答

5

JavaScript语言是case-sensitivehasclass()方法不存在,但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"); 
}); 
+0

+1更改了我的代码,以发现问题。 – deceze 2010-12-15 06:52:45

1

尽量用活,因为他们越来越添加和删除,

我认为当你删除他们所得到的未绑定..

$('#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"); 
    }); 
}); 
+0

我根据hamidi建议/// – kobe 2010-12-15 06:50:16

4

试试这个:

$('#registration :text').removeClass('warn').addClass('texta'); 

看哪的jQuery泽玛姬!

几乎每个jQuery方法都可以工作$函数返回的每个元素。因此,不需要遍历所有结果,removeClassaddClass将应用于#registration :text选择器找到的所有元素。此外,在删除或添加类之前,无需进行任何检查。如果你添加了这个类,并且这个元素已经有了这个类,那什么都不会发生。反过来去除一个班级。

尝试阅读a tutorial,这是什么让jQuery如此强大!

+0

不小心回答了这个问题:) – yoda 2010-12-15 06:52:05

+0

请问你能解释一下这是如何工作的吗?我爱它简单,我只想知道。 – Samuel 2010-12-15 06:52:46

+0

@samuel这就是所谓的jquery链接,这是很好的性能也// – kobe 2010-12-15 06:53:25