我想写一个选择器的选择器
1.输入radio
或 checkbox
类型的元素
2.选择哪个,即。我is(':checked')
为true
3.并申请了一些课程
我想出了以下代码
$([':radio'],[':checkbox']).each(function() {
if($(this).is(':checked'))
{
className = $(this).attr('class');
if(className!= "")
{
$('#'+className +' :input').attr('disabled', false);
}
}
});
它的工作正常,但我正在寻找更有效的解决方案,因为我选择了所有radio
和checkbox
并对其进行过滤。
我如何结合所有条件?
谢谢!
修改
radio
或checkbox
可以包含任何类,即我想选择所有已选中的radio
或checkboxes
并且至少应用class
个{{1}}。
答案 0 :(得分:4)
此选择器将找到所选的任何无线电或复选框控件,并且上面有一些类。
$(":radio:checked[class], :checkbox:checked[class]")
您可以在此处看到它:http://jsfiddle.net/jfriend00/bYbnH/
如果你需要避免空的类名(属性存在,但它设置为空字符串,那么你可以使用它:
$(":radio:checked[class], :checkbox:checked[class]").filter(function() {
return(this.className && this.className.length != 0);
})
答案 1 :(得分:2)
你可以尝试
$(":radio:checked ,:checkbox:checked").hasClass("someclass")
编辑问题后
$(":radio:checked[class] ,:checkbox:checked[class]")
答案 2 :(得分:1)
$(':radio:checked,:checkbox:checked').filter(function(){
return $(this).attr('class').length>0;
});
答案 3 :(得分:0)
$(':radio:checked,:checkbox:checked').filter(function (index) {
if ( typeof $(this).attr('class') != 'undefined' )
return true;
else
return false;
}).each(function() {
alert('i am checked and i am checkbox or radio and i have a class!');
});
更新:
您想使用$.filter()
:
HTH
答案 4 :(得分:0)
我会去
jQuery(":radio:checked ,:checkbox:checked")
.filter(function() {
// return true if className is not empty or just whitespace
return ! this.className.match(/^\s*$/)
})