2016-03-30 11 views
1

同じドロップダウンメニューの複数のインスタンスを含むテーブルがあります。テーブルの各行は一意の操作を表しているので、毎回このドロップダウンメニューでユーザーの選択を取得できる必要があります。'parents'と 'find'を使用して選択されたドロップダウンメニューの選択値が未定義を返す - Jquery

私のHTMLコードは、この(簡潔にするために切り捨て)のようになります。ドロップダウンのchangeイベントで

<tr class="convRow"><td> 
    <select class="convSelect"> 
     <option value="Select" selected="selected">Select</option> 
     <option value="1">Foo</option> 
     <option value="2">Bar</option> 
    </select> 
</td></tr> 

、私はこのjQueryの関数を呼び出す:

function convertThis(e) { 
    var targ = e.target || e.srcElement, 
     cSel = $(targ).parents('.convRow').prev().find('.convSelect').val(); 

    console.log(cSel); 
} 

は明らかにもっとここに起こることがありますよりも、 console.logですが、あなたはそのアイディアを得ています。ポイントは、ユーザーが選択した内容に基づいて1、2、またはSelectを返すべきときにcSelが現在未定義を返すということです。選択したテキストとは対照的に、値を取得したいのです。

'convRow'クラスの7つのテーブル行と、このデータを取得する必要のある別のインスタンスがあります。これはドロップダウン変更イベントだけでなく、このようにしています。私は関数 '関数'を除いて、 'prev()'関数を成功させずに試みました。何か案は?

答えて

1

現在の要素のthisコンテキストでは、.val()メソッドを直接使用することをお勧めします。

function convertThis(e) { 
    var sSel = $(this).val(); 
    console.log(cSel); 
} 

のようにしかし、あなたはそれがtr要素の前の兄弟の要素を検索しますと声明から.prev()を削除する必要があります。

使用

$(targ).parents('.convRow').find('.convSelect').val(); 

代わりの

$(targ).parents('.convRow').prev().find('.convSelect').val(); 
+0

を使用すべきだと思います私のドロップダウンの変化があった、私はうわーあなたの方法を試してみてください。残念ながら、これは当てはまりません。 – bmurrell30

+0

@ bmurrell30、あなたの問題を詳述してください。簡潔さのために_truncated_あなたの正確な問題を見つけるのを助けるものではありません。 – Satpal

+0

私の前では間違っていましたが、私のルックアップから 'prev()'は今働いています。手伝い。申し訳ありませんが、元のコメントを編集する時間を使い果たしました。 – bmurrell30

0

私はあなたが私が選択した値を取得することを計画していただけの時間場合はjQueryのイベント

$(".convSelect").on('change', function(){ 
    sSel = $(this).val(); 
    console.log(sSel); 
}) 
関連する問題