2

<select>我必须在某些标签中选择正确的选项。我有一个数组,其中键是标签的数量,值是我必须选择的选项的值属性。

这是我的代码:

//array ids contains values of option to select.
//.ingredients is class of <select> tags

var i=0;

$('.ingredients').each(function() {

$(this).find('option[value="' + ids[i] + '"]').attr("selected","selected");
i++                  
});

对于<select class='ingredients>选择正确选项字段的每个选项。ids 数组的键表示<select>标签的数量。这就是我想做的。

谁能告诉我错误是什么?

4

2 回答 2

2

你忘了一个“;” 在i++...之后

您可以使用indexwitheach()而不是使用“i”变量:

$('.ingredients').each(function(index) {
  $(this).find('option[value="' + ids[index] + '"]').attr("selected","selected");
});

此外,在选项上设置选定的属性比您最初想象的要复杂一些,因为如果选择元素的类型为“select-one”,它会影响其他元素。这是 jQuery Form 插件中提供的一个小插件,用于处理选择/取消选择选项以及复选框和单选。像这样使用它:

只需将其放在代码中的某个位置:

$.fn.selected = function(select) {
    if (select == undefined) select = true;
    return this.each(function() {
        var t = this.type;
        if (t == 'checkbox' || t == 'radio')
            this.checked = select;
        else if (this.tagName.toLowerCase() == 'option') {
            var $sel = $(this).parent('select');
            if (select && $sel[0] && $sel[0].type == 'select-one') {
                // deselect all other options
                $sel.find('option').selected(false);
            }
            this.selected = select;
        }
    });
};

然后尝试用这个替换你首先给出的代码:

$('.ingredients').each(function(index) {
  $(this).find('option[value="' + ids[index] + '"]').selected(true);
});
于 2012-09-24T12:48:13.333 回答
0

而不是.attr("selected", "selected"),尝试.prop("selected", true)

[更新]

实际上,我认为代码没有任何问题。这是工作。我认为问题出在您的 HTML 上。您是否在 DOM Ready 事件之前执行代码?

http://jsfiddle.net/VPcMx/

尝试

 $(function(){
    $('.ingredients').each(function(i) {

        $(this).find('option[value="' + ids[i] + '"]').prop("selected", true);
        i++                  
    });
});
于 2012-09-24T12:50:36.313 回答