2016-03-28 11 views
2

私は、change()イベントを処理するために必要な数の<select>オブジェクトを持っています。私はDOMを完全に制御することはできません。なぜなら、プラグインは実行時にいくつかのことをやってより複雑にするからです。その結果、私はbuttonで自分自身を見つけました。その背景色は、選択した項目の値に基づいて変更する必要があります。jQuery - 兄弟を繰り返してボタンを識別する

選択したアイテムから色の16進値を取得できます。 <button><select>は兄弟であるため、このボタンを見つけたときに停止する意図で、この関係を繰り返し使用しています。

$('select').on('change', function() { 
    var this_color = $(this).val(); 

    $(this).siblings().each(function(i, elem) { 

     if (elem.is(":button")) { 
      elem.css('background-color', this_color); 
      return false; 
     } 
    }); 
}); 

しかし、これは私が間違って何をやっている

Uncaught TypeError: elem.is is not a function

をスローし、エラー?ありがとう!あなたのケースでは

答えて

3

elemはプレーンノードオブジェクトであるあなたができるjQueryの要素のコレクションを反復処理するために.each()を使用しているので、あなたは.is()

if($(elem).is(":button")) { 
    $(elem).css('background-color', this_color); 

を利用するためにjQueryオブジェクトとしてそれを変換する必要があります、代わりにパラメータとして明示的にelementを受けるの

$(this).siblings().each(function() { 
    var _this = $(this); 
    if(_this.is(":button")){ 
    _this.css('background-color', this_color); 
    return false; 
    } 
}); 
+0

パーフェクトを$(this)を使用しています。どうもありがとうございました! (私がそうするとすぐに受け入れます)。 – Alex

+0

@Randall助けてよろしいですか? :) –