Jquery 如何获取所有未选中的单选按钮
好的,我有一个jQuery代码,它从XML数据构造我的无线电输入,如下所示:Jquery 如何获取所有未选中的单选按钮,jquery,html,css,Jquery,Html,Css,好的,我有一个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 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;
var items=xml.children('item');
如果(items.length>0)
{
变量ul=$(“
”{
类别:“价格表”
});
项。每个(函数(){
var$this=$(this);
变量li=$(“”);
变量img=$(''{
键入:“收音机”,
id:$this.children('id').text(),
名称:“产品”
});
变量范围=$(''{
text:$this.children('price').text()+'USD'
});
变量标签=$(''{
for:$this.children('id').text()
});
标签.附加(img);
标签。追加(“”);
标签。追加(span);
li.追加(输入);
li.附加(标签);
ul.hide().append(li.fadeIn('slow');
});
返回ul;
}
返回null;
现在,我需要一个很好的方法来找到所有未检查的无线电标签,并对其进行处理,例如淡出它们或更改css属性。由于XML列表由近40项组成,编写if-else结构是不可能的。我们需要一个好的解决方案。提前谢谢
编辑:见下面我的答案。我认为这应该行得通
$("input:!checked");
您可能还需要在其中放置一个类选择器
然后执行。每个对元素执行操作
$('form input[type="radio"]').not(':checked').each(function() {
$(this).addClass('unchecked');
// or
$(this).slideUp('slow');
});
显然,您使用的元素由您自己决定,但是:unchecked选择器是您所追求的。试试这个(另请参见我的):
我自己找到的。上述答案对我来说都不管用,这很奇怪,因为其中大多数答案都应该是完全合法的
事实上,我所发现的工作是
$('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...
只是好奇。是否可以将未选中的botton的样式设置为默认样式,并仅重新设置选中botton的样式?如果你能的话,看起来会更容易更有效。我当然能。但这不会让我得到我需要的结果。在检查其中一个元素之前,观众需要看到所有元素都没有变化。明白了。我得好好考虑一下。在任何情况下,可能会有人很快找到一个好的解决方案。您确定这是有效的JQuery吗?我把它弄得有点乱,弄不好它能用。但是已经很晚了,我很累:)这对我不起作用。我相信你应该使用“输入:不(:检查)”就像在接受的答案中一样
//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...