JQuery prevAll不影响a中的元素<;span>;

JQuery prevAll不影响a中的元素<;span>;,jquery,Jquery,看一下演示。为什么prevall不会影响span内的?(或者,我怎样才能让它那样工作?) 您的第一个选择的在span中,第二个不在span中。我认为这是一个打字错误 答案假设第二个select也在span中 $('.test').bind("propertychange keyup input paste", function(event){ if ($(this).val() != '') { $(this).prev().find('select').attr('di

看一下演示。为什么prevall不会影响span内的
?(或者,我怎样才能让它那样工作?)


您的第一个
选择的
在span中,第二个不在
span
中。我认为这是一个打字错误

答案假设第二个
select
也在span中

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

这是因为,在第一种情况下,prevAll返回上一个同级元素,在这种情况下,span元素未被禁用,但不是select元素。因此,select元素未被禁用。在第二种情况下,选择元素被选中并禁用。要在第一种情况下工作,应在span元素中找到select

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

这是因为prevAll选择了“同级”,而“select”不是它的同级,“span”是。所以你可以使用“密码悖论”的建议

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