JQuery prevAll不会影响<span> </span>中的元素

时间:2012-09-17 05:42:18

标签: jquery

JSFIDDLE

看看演示。为什么不会影响范围内的<select>? (或者,我怎么能让它以这种方式工作?)

4 个答案:

答案 0 :(得分:0)

$('.test').bind("propertychange keyup input paste", function(event){
    if ($(this).val() != '') {
        $(this).prevAll().find('select').attr('disabled', true);
    } else {
        $(this).prevAll().find('select').attr('disabled', false);
    }
});

Demo

答案 1 :(得分:0)

您的第一个select是跨度,第二个不是span ..我认为这是一个错字。

答案假设第二个select也在范围

$('.test').bind("propertychange keyup input paste", function(event){
    if ($(this).val() != '') {
        $(this).prev().find('select').attr('disabled', true);
    } else {
        $(this).prev().find('select').attr('disabled', false);
    }
});

答案 2 :(得分:0)

这是因为,在第一种情况下,prevAll返回前一个兄弟,在这种情况下是未禁用但不是select元素的span元素。因此不禁用select元素。在第二种情况下,选择和禁用选择元素。要在第一种情况下工作,您应该在span元素中找到select。

$(this).prevAll().find('select').attr('disabled', true);

答案 3 :(得分:0)

这是因为prevAll选择“兄弟姐妹”而“选择”不是它的兄弟姐妹,“span”是。所以你可以使用“thecodeparadox”建议的内容。