嵌套的Jquery选择器

时间:2012-02-08 08:04:24

标签: jquery jquery-selectors

我想写一个选择器的选择器 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);
        }
    }   
  });    

它的工作正常,但我正在寻找更有效的解决方案,因为我选择了所有radiocheckbox并对其进行过滤。
我如何结合所有条件?

谢谢!


修改
radiocheckbox可以包含任何类,即我想选择所有已选中的radiocheckboxes并且至少应用class个{{1}}。

5 个答案:

答案 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()

http://jsfiddle.net/grGHa/1/

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*$/) 
  })
相关问题