attr('selected','selected')在jquery中不起作用

时间:2011-12-01 10:15:46

标签: jquery

$('#sellist option').each(function(index) {
    var str ='4/5/8';
    var substr = str.split('/');
    if (substr[0] == $(this).attr('value')) {
        $(this).attr('selected','selected');
        alert('hi'); ///For check
    }
});

一切正常,alert被解雇了。我在控制台中没有任何错误。但我没有选择#sellist option。我的问题是什么感谢。

7 个答案:

答案 0 :(得分:14)

用prop替换attr。

$('#element').prop('selected', true);

答案 1 :(得分:3)

您的代码运行正常。它只是选择数组的第一个元素4,因为您没有循环遍历数组,只需使用substr[0]来获取第一个值。

要查看它是否有效,我将初始值更改为7

$('#sellist option').each(function(index) {
    var str = "7/5/8";
    var substr = str.split('/');

    if (substr[0] == $(this).val()) {
        $(this).attr('selected', 'selected');
        alert($(this).val()); ///For check
    }
});

Fiddle to show it works

OP澄清他想围绕数组

要循环遍历数组并选择多重选择中的每个值,请使用:

$('#sellist option').each(function(index) {
    var str = "4/5/8";
    var substr = str.split('/');

    for (var i = 0; i < substr.length; i++) {
        if (substr[i] == $(this).val()) {
            $(this).attr('selected', 'selected');
        }
    }
});

Update fiddle

答案 2 :(得分:1)

$(this).attr('selected','selected');

应替换为:

$(this).attr('selected', true);

答案 3 :(得分:1)

如果您想要选择一个选项,例如,您希望选择值为4的选项,只需执行$('#sellist').val('4');

答案 4 :(得分:0)

你可以这样做

$('#sellist').val($(this).attr('value'));

答案 5 :(得分:0)

$(this).attr('selected', true);应该为你做的伎俩。

答案 6 :(得分:0)

你可以这样:

var str ='4/5/8';
$.each(str.split('/'), function(i, val) {
    $('#sellist option').filter('[value="' + val + '"]').prop('selected', 'selected');
});

jsFiddle

上的工作示例