2016-03-28 9 views
1

<select>のオブジェクトを繰り返し処理しようとしています。それぞれについて、一連の<option>タグを追加する必要があります。これらのオプションを使用すると、データベースに保存される色を選択できます。さて、私はオブジェクトのスタイリングを処理するためにbootstrap-selectプラグインを使用していますが、これは私の投稿とは関係ないと思います。jQuery - <option>は、<select>とそれ以降の両方に追加されています

<option>タグの配列は、データベースから実行時にロードされる隠しフィールドのグループから学習されます。したがって、それまでは知られていないので、すべてのことが動的に行われなければなりません。これらの隠された各フィールドは 'color_list'クラスに属しているので、反復は非常に簡単です。

<select>オブジェクトを正しく更新できるのであれば、私のコードは機能します。しかし、私のコードでは、の<select>タグが閉じられているので、これらのコードを<option>タグと重複しているように見えます。絵は何千語もの価値がありますよね?個々の<option>タグはそれ(間違った)の外に、再び(正しい)と<select>タグ内に一度繰り返される方法

enter image description here

お知らせ? <select>タグの外側に追加されたタグは、実際には新しいカラーブロックをドロップダウンリストの下に追加しています。

私のjQueryコードでは、一度だけ追加しているので、なぜこのようなことが起こっているのか分かりません。

function updateColorPickers() { 

    // iterate over each color picker 
    $(".colorpicker").each(function(i, picker) { 

     // and add each color as an option to it 
     $(".color_list").each(function(j, elem) { 
      var str = "<option class='color_opt' style='background:"; 
      str  += $(elem).val(); 
      str  += "'>"; 
      str  += $(elem).val(); 
      str  += "</option>"; 

      $(picker).append(str); 
     }); 

     $(picker).selectpicker('refresh'); 
    }); 
} 

答えて

4

クラスcolorpickerの2つの要素があるからです。あなたはおそらく、私はそれに気付かなかった$('select.colorpicker').each

+0

を使用して、それを修正することができ、$('.colorpicker').length == 2

つまりはselect.colorpickerdiv.colorpicker

にそれを追加しています。余分なクラスは 'bootstrap-select'コードによって追加されています。私はそれを回避する方法を理解する必要があります。ありがとうございました! – Alex

+1

@Randall '$(" select.colorpicker ")'では、colorpickerクラスを持つページ上の選択をANY選択に制限することができます。私のセレクタのためにそれを選択して使用するには、私は一意のIDを置くことができます。 – MattSizzle

+0

'$( 'select.colorpicker').eachはそれを解決しました。再度、感謝します! – Alex

関連する問題