2009-10-28 84 views
0

我正在使用捕获所有的方法对我的窗体上的所有输入时,它正在由jQuery处理。使用jQuery处理复选框

$.each($(':input'),function() 
{ 
    //stuff     
}); 

我需要能够做的就是看看是否有这些投入是一个复选框,此刻我能找到的唯一的事情是,如果现场检查或者不说。

任何帮助将不胜感激。

+0

仅供参考:由于两个原因,您选择了错误的答案 原因a:':input'匹配所有输入,textarea,选择和按钮元素。显然,选择在这里是不需要的。在这种情况下,“输入”会更加正确。 原因b:选择全部然后过滤方法(输入 - >每个 - >如果类型==复选框)将导致不必要的迭代,而'input [type = checkbox]'会在'.each'迭代进入之前对它们进行过滤图片。 – 2009-10-29 06:10:14

+0

感谢您的关注,但是需要选择,我感觉:输入是整个方法的最佳方式。 复选框需要与其他所有内容混合在一起,但我需要额外的事情来处理它们。迭代将保持不变。 – Toby 2009-10-29 14:40:03

回答

4

如果你想知道它是否是该函数内部复选框:

$(':input').each(function() { 
    if (this.type==='checkbox') 
     .... 
}); 

(是的,你也可以说$(this).attr('type')==='checkbox',如果你是那些对所有事情都使用jQuery语法的人的话。但是,真的,有什么意义?它一定要慢一些,少可读性)

如果你想找到只复选框,还有针对特殊的过滤器:或者

$(':checkbox').each(function() { 
    ... 
}); 
-1

尝试这种在.each功能

if($('#myId').attr('type') == 'checkbox') 
alert ('checkbox'); 

UPDATE

$.fn.tagName = function() {    
    return this.attr("type");   
}          
    $(document).ready(function() {  
    alert($('#testElement').tagName()); 
    });       
+0

复选框不是一个tagName,它是一个类型。 – bobince 2009-10-28 11:53:12

3

你可以这样做:

$.each($(":input[type=checkbox]"), function() { 
    // stuff 
} 
+0

这里做':input'而不是'input'是什么意思? – 2009-10-28 14:32:07

+0

:输入错误。因为它匹配所有'input','textarea','select'和'button'元素。在这种情况下根本不需要'select' – 2009-10-29 06:13:21