2014-01-07 15 views
1

我试图从已从数据库中拉出的数据从服务器动态创建的表格行中获取下拉列表的值。 例子:如何从jQuery的表格行中的下拉列表中获取用户选择的选项

<table> 
    <tr> 
    <td> 
     <select onChange="setPaymentAmt()"> 
     <option value="1">Option1</option> 
     <option value="2">option2</option> 
     </select> 
    </td> 
    </tr> 
    <tr> 
    <td> 
    <select onChange="setPaymentAmt()"> 
     <option value="3">Option1</option> 
     <option value="4">option2</option> 
    </select> 
    </td> 
</tr> 
</table> 

如果我想抓住从用户选择的选项的值使用jQuery我怎么得到它的特定行?

这是我曾尝试:

function setPaymentAmt() { 
    var data = $(this).closest('select option:selected').val(); 
    alert(data); 
} 

当我提醒它显示未定义

+0

什么是调用'setPaymentAmt'?你也应该读一下“最接近”的东西。 –

+0

我有一个onchange()事件附加到下拉,以便当用户单击下拉并作出选择它运行setPaymentAmt()函数。 – user3170504

+0

如果[zgood'answer](http://stackoverflow.com/a/20981255/2324107)不起作用,我们将需要更多信息。 –

回答

2

你必须改变事件附加到所有<select>的,就像这样:

$('select').bind('change', function(){ 
    var data = $(this).val(); 
    alert(data); 
}); 

或者其动态:

$(document).on('change', 'select', function(){ 
     var data = $(this).val(); 
     alert(data); 
}); 

如果您已经附加了更改事件<select>,并且您正在从该事件呼叫setPaymentAmt(),那么您将需要通过setPaymentAmt()引用触发事件的<select>。像这样:

//Inside your onchange event 
var sel = $(this); 
setPaymentAmt(sel); 

function setPaymentAmt(sel) { 
    var data = sel.val(); 
    alert(data); 
} 
+0

这正是我所需要的。在html中,我包含了对像你所说的