我的页面上有很多输入,所有输入都符合以下模式:
<label>
<input onchange="checkvals()" name="Segment_" value="OL" id="Segment_8" type="checkbox">
Ocean Line (<span id="ms9" class="detect">0</span>)</label>
所以标签,输入,跨度内有一类“检测”,以及该范围内的值。
我试图这样做,如果项目类值“detect”= 0,它会将之前的输入设置为禁用(相反,如果大于零,则确保它已启用)。
我的jQuery语法在选择器/父级上是错误的。什么应该是正确的语法?
$('.detect').each(function () {
if ($(this).text() == '0') {
$(this).closest('input').prop('disabled', 'true');
}
});
答案 0 :(得分:1)
.closest
找到了祖先元素,由于span
不在里面,input
它不起作用。
描述:对于集合中的每个元素,通过测试元素本身并在DOM树中遍历其祖先来获取与选择器匹配的第一个元素。
但是,您可以找到label
,然后找到input
$('.detect').each(function () {
if ($(this).text() == '0') {
$(this).closest('label').find('input').prop('disabled', 'true');
}
});
答案 1 :(得分:0)
最近看自己和父母。它不看兄弟姐妹。
$(this).closest("label").find('input').prop()
或
$(".detect").siblings("input").prop()
答案 2 :(得分:0)
$(this).prev('input').prop('disabled', 'true');
这也应该有效。
获取该组中每个元素的前一个兄弟 匹配的元素。