基于类值

时间:2016-12-29 21:19:58

标签: jquery

我的页面上有很多输入,所有输入都符合以下模式:

<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');
            }
});

3 个答案:

答案 0 :(得分:1)

.closest找到了祖先元素,由于span不在里面input它不起作用。

Quote from the .closest docs

  

描述:对于集合中的每个元素,通过测试元素本身并在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');

这也应该有效。

https://api.jquery.com/prev/

  

获取该组中每个元素的前一个兄弟   匹配的元素。