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