所有未选中的单选

所有未选中的单选

好的,所以我有一个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...

关于jquery - 如何获取所有未选中的单选按钮,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7592803/

10-11 12:54