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++...

「i」変数を使用する代わりにindexwithを使用できます。each()

$('.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 に答える