2017-09-19 3 views
0

セマンティックUIフレームワークを使用している間、私は複数のアイテムを動的に追加できるフォームを作成しています。セマンティックUI:動的に追加されたドロップダウンメニューはセレクトの値を変更しません

これらのアイテムのフォームには、変更をリッスンするために必要なドロップダウンメニューがあります。これは、ページがロードされたときに初期化されたドロップダウンに対しては完全に機能しますが、動的に追加されたドロップダウンでは機能しません。

は私の問題を特定するための試みで、私はこのJSFiddleを作成しました:https://jsfiddle.net/e7q1shyv/1/

セマンティックUIのドロップダウンメニューが<select>を更新していないようです。

私はドキュメントを調べてみましたが、検索しましたが、これについて何も見つかりませんでした。

この問題を修正していただきありがとうございます。

+0

それはそれが機能していない私の側 –

+0

ん@MuhammadIrfanに取り組んでいます....を選択し[追加]をクリックした後...もう一度確認してください。 2番目のドロップダウンの変更を確認してください – rahulsm

+0

私の側で働いています –

答えて

1

あなたは、この行でエラーが発生しています。

$(document).on('change', 'select', function(){ 
    $('span').html($('select').val()) 
}); 

ここでは、選択クラスの最初のselect要素に常に対応する 'select'の値を取っています。現在のインスタンス値を取得するには、$ thisに変更します。あなたのコードは

$(document).on('change', 'select', function(){ 
    $('span').html($(this).val()) 
}); 

の作業フィドルに変更します

- https://jsfiddle.net/e7q1shyv/3/

+0

ああ!恥ずかしい!奇妙なことですが、私の実際のコードでは、変更イベントはまったく登録されません。ウサギの道に戻って私は推測する。 :) – joshuadelange

+0

ハハ。時には起こる。実際には非常に些細な間違いがありますが、あなたは大きなエラーを探し続けています:)技術に関する議論に興味がある場合は、ここでSlackに参加できます - https://join.slack.com/t/code-slayers -den/shared_invite/enQtMjQxNzM4MzQwMTk0LTVmYzcxZDQxMzliNmEyMmNjZjVmMWNhN2Q0ODkwOWZhMjBmOTA3NWFiN2JmOTY4MzhhODhlMTU4ZTM5NmMxZDI。 – codeslayer1

1

作業コードを確認しています。

$(document).ready(function() { 
 
    $('select').dropdown(); 
 
}); 
 

 
$(document).on('change', 'select', function() { 
 
    var valu = $(this).val(); 
 
    $('span').html(valu); 
 
}); 
 

 
$('button').click(function() { 
 
    $('select').first().clone().appendTo('.selects') 
 
    $('select').dropdown(); 
 
});
.ui.button { 
 
    margin-top: 50px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<link href="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.2.1/semantic.css" rel="stylesheet" /> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.2.1/semantic.js"></script> 
 
<div class="selects"> 
 
    <select class="ui dropdown"> 
 
    <option>Option 1</option> 
 
    <option>Option 2</option> 
 
    </select> 
 
</div> 
 

 
<button class="ui button">Add select</button> 
 

 
<p>Value changed: <span></span></p>

あなたは何をしていただけselect要素のフェッチ値であり、それはすべての時間は、DOM内の選択の最初のインスタンスの値を取得します。

私がvar valu = $(this).val();を書き込んだときに現在の要素の値を取得すると、現在の要素の値が取得されます。

ここに更新されたjsfiddleリンクがあります。

1

ただ、次のように、$(this)ため$('select')を変更し、それが完璧に動作します:

$(document).on('change', 'select', function(){ 
    $('span').html($(this).val()) 
}); 
関連する問題