2011-11-03 34 views
4

我在页面上有几个选择列表。它们都以数组形式命名,以便它们以视图模型列表的形式回传给控制器。当他们被渲染,他们看起来像这样:对于SELECT列表的这个JQuery绑定有什么问题?

<select id="OrderItemViewModels_2__OrderItemStatusId" name="OrderItemViewModels[2].OrderItemStatusId"><option value="-1"></option> 
<option value="1">CONFIRMED</option> 
<option value="2">NO SALE</option> 
<option value="3">PENDING</option> 
</select> 

我想.change()事件处理程序绑定到他们,所以我可以触发阿贾克斯调用,以填补在此基础上一值的另一个下拉列表中,但绑定不起作用。该JS是这样的:

$(document).ready(function() { 
     $('select[name$="OrderItemStatusId"]').each(function(){ 
     //alert(this.name); 
     var dropdown = this; 
     dropdown.change(function() { 
      alert('testing '); 
      //GetOrderItemReasons(dropdown.val()); 
     }); 
     }); 

我收到的错误是“对象不支持此属性或方法”。但是,第一个警报清楚地显示该项目正在被选中,因为它正确显示了名称。

我在这里做错了什么?

+0

尝试使用'dropdown.live('change',function(){})' –

回答

9

变化:

var dropdown = this; 

要:

var dropdown = $(this); 

change()是一个jQuery对象的一个​​方法,所以你需要在呼叫包thisjQuery()$()