2017-10-04 9 views
2

私は素晴らしいjQueryプラグインを使用して複数の選択ボックスを編集可能に変換しようとしています:https://github.com/indrimuska/jquery-editable-selectすべての選択ボックスのIDの配列を作成します

最初の手順は、すべての選択ボックスのIDを取得することです。 http://jsfiddle.net/49rk6ph7/69/から私はこれを試してみましたが、私は届かない。

[s1,s2] 

は、どのように私はこの作業を得ることができますか?

var test = []; 
 
test = $("select").each(function() { 
 
    test.push($(this).attr('id')) 
 
}); 
 

 
console.log(test);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="select-editable"> 
 
    <select id="s1" onchange="this.nextElementSibling.value=this.value"> 
 
    <option value=""></option> 
 
    <option value="115x175 mm">115x175 mm</option> 
 
    <option value="120x160 mm">120x160 mm</option> 
 
    <option value="120x287 mm">120x287 mm</option> 
 
    </select> 
 
    <input type="text" name="format" value="" /> 
 
</div> 
 

 
<div class="select-editable"> 
 
    <select id="s2" onchange="this.nextElementSibling.value=this.value"> 
 
    <option value=""></option> 
 
    <option value="115x175 mm">115x175 mm</option> 
 
    <option value="120x160 mm">120x160 mm</option> 
 
    <option value="120x287 mm">120x287 mm</option> 
 
    </select> 
 
    <input type="text" name="format" value="" /> 
 
</div>

答えて

3

あなたはjQueryオブジェクトではなく、あなたがもともと定義配列ですeach()の結果、へtestを割り当てているので、あなたのコードに問題があります。その文からtest =を単に削除してください。あなたが代わりeach()ループのmap()を使用して、と控えめなJSのイベントハンドラと時代遅れon*属性を除去することにより、ロジックがより簡潔にすることができ

注意。このような何か:ちょうど私の理解のために

var test = $("select").map(function() { 
 
    return this.id 
 
}).get(); 
 

 
console.log(test); 
 

 
$('#s1, #s2').change(function() { 
 
    $(this).next().val($(this).val()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="select-editable"> 
 
    <select id="s1"> 
 
    <option value=""></option> 
 
    <option value="115x175 mm">115x175 mm</option> 
 
    <option value="120x160 mm">120x160 mm</option> 
 
    <option value="120x287 mm">120x287 mm</option> 
 
    </select> 
 
    <input type="text" name="format" value="" /> 
 
</div> 
 

 
<div class="select-editable"> 
 
    <select id="s2"> 
 
    <option value=""></option> 
 
    <option value="115x175 mm">115x175 mm</option> 
 
    <option value="120x160 mm">120x160 mm</option> 
 
    <option value="120x287 mm">120x287 mm</option> 
 
    </select> 
 
    <input type="text" name="format" value="" /> 
 
</div>

+0

は、VARテスト= $( "選択")で、テストはjQueryオブジェクトのですか? – user61629

+0

そうです。元のコードでは 'test'は' each() 'から返された値です。これは' select'要素を含むjQueryオブジェクトです。上では、 '.map()。get()'から返された文字列の配列になります。 –

5

あなたのjQueryの呼び出しの前にtest =を削除してください。元のtest配列を上書きしています。

これはあなたが必要とするすべてである:

var test = []; 

$("select").each(function() { 
    test.push($(this).attr("id")); 
}); 

console.log(test); 
関連する問題