微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jquery – 如何获取所有未选中的单选按钮

好的,所以我有一个jQuery代码XML数据构建我的无线电输入,像这样:
var items = xml.children('item');
if (items.length > 0)
{
    var ul = $('<ul/>',{
        class: 'priceList'
    });
    items.each(function(){
        var $this = $(this);
        var li = $('<li/>');
        var img = $('<img/>',{
            src: 'products/' + $this.children('image').text(),});
        var input = $('<input/>',{
            type: 'radio',id: $this.children('id').text(),name: 'products'
        });
        var span = $('<span/>',{
            text: $this.children('price').text() + ' USD'
        });
        var label = $('<label/>',{
            for: $this.children('id').text()
        });
        label.append(img);
        label.append("</br>");
        label.append(span);
        li.append(input);
        li.append(label);
        ul.hide().append(li).fadeIn('slow');
    });
    return ul;
}
return null;

现在,我需要一个很好的方法来找到所有未经检查的收音机标签,并与他们做某事,例如将它们淡出或更改css属性.由于XML列表由近40个项目组成,因此编写一个if-else结构是一个没有进行的事情.需要一个很好的解决方案.提前致谢!

编辑:看下面我的回答

解决方法

发现自己以上答案都不适用于我,这是奇怪的,因为大多数人应该是完全合法的.

我发现工作实际上是

$('input[type="radio"]:not(:checked)')

在我的情况下,我需要

$('li input[type="radio"]:not(:checked) + label')

整个代码是:

//we'll need m for detecting a click outside of element with our radio buttons...
var m = false;
$(document).ready(function(){
    $.ajax({
        type: "GET",url: 'xml.xml',dataType: 'xml',success: function(data){
            var xml = $(data);
            $('#windowList').append( ItemToUl(xml.children()) );
        }
    });
    $('.calc').hover(function(){ 
        m=true; 
    },function(){ 
        m=false; 
    });
    $("body").mousedown(function(){ 
        if(! m) { 
            //...and unchecking a checked radio. I heard that .attr() was deprecated but Couldn't get .prop() to work
            $('li input[type="radio"]:checked').attr('checked',false);
            $('li input[type="radio"]:not(:checked) + label').fadeto('slow',1);
        }
    });
    $("li input").live("change",function(){
        $('li input[type="radio"]:checked + label').fadeto('slow',1);
        $('li input[type="radio"]:not(:checked) + label').fadeto('slow',0.45);
    }); 
});

//constructing function,etc...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐