通过下面显示的HTML我试图禁用两个sRadio1输入或两个sRadio2输入(如果其中任何一个被检查),所以我尝试使用JQuery这样做,如下所示,但由于某种原因它不起作用。有人可以告诉我这里到底做错了什么以及如何解决?感谢
<ul class="soptionslist">
<li>
<h2>Options</h2>
<ul class="soptions">
<li>
<fieldset>
<input type="radio" class="sRadio" name="sRadio1">
</fieldset>
<fieldset class="option2">
<input type="radio" class="sRadio" name="sRadio1">
</fieldset>
<p>Option A</p>
</li>
<li>
<fieldset>
<input type="radio" class="sRadio" name="sRadio2">
</fieldset>
<fieldset class="option2">
<input type="radio" class="sRadio" name="sRadio2">
</fieldset>
<p>Option B</p>
</li>
</ul>
</li>
</ul>
JQuery代码
$(".soptions input").change(function() {
if (this.checked) {
$(this).parent('li').find('input').attr('disabled', true);
} else {
$(this).parent('li').find('input').attr('disabled', true);
}
});
答案 0 :(得分:1)
使用closest()
代替parent()
更改为:
$(".soptions input").change(function () {
if (this.checked) {
$(this).closest('li').find('input').prop('disabled', true);
} else {
$(this).closest('li').find('input').prop('disabled', true);
}
});
对于JQuery 1.6 +:
使用.prop()
功能:
$(this).closest('li').find('input').prop('disabled', true);
对于JQuery 1.5及以下版本:
.prop()
功能不可用,因此您需要使用.attr()
。
$(this).closest('li').find('input').attr('disabled', true);
答案 1 :(得分:0)
您需要使用.prop()
代替.attr()
$(".soptions input").change(function() {
if (this.checked) {
$(this).parent('li').find('input').prop('disabled', true);
} else {
$(this).parent('li').find('input').prop('disabled', true);
}
});