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