通过下面显示的 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);
}
});
最佳答案
使用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);
<强> JSFiddle
关于javascript - JQuery 使用 .find 禁用 Radio 输入元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24688515/