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