-1

JSFIDDLE

看看演示。为什么 prevall 不会影响<select>跨度内的内容?(或者,我怎样才能让它这样工作?)

4

4 回答 4

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

演示

于 2012-09-17T05:45:37.933 回答
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);
    }
});
于 2012-09-17T05:46:45.137 回答
0

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

$(this).prevAll().find('select').attr('disabled', true);
于 2012-09-17T05:47:02.353 回答
0

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

于 2012-09-17T05:47:11.953 回答