将实时更改侦听器绑定到选择框

时间:2013-07-08 10:57:36

标签: javascript jquery

我有一个表,其中一列包含一个选择框。 我需要将侦听器绑定到任何select活动,以便根据哪个行的选择框已更改来更改表行的某些属性。所以很明显我没有选择框的修复ID。 以下是我尝试的代码,但它无法正常工作。未来可能会向表中添加更多行,因此需要实时监听器。

$('#datatable').on('change', '.MediaType  select' function(){
    console.log('Changed');
    //console.log($(this.find('select :selected').text()));
});

这里MediaType是封闭的td元素的类。 'datatable'是我的表的id。 有人可以建议一个解决方案。

更正版本如下:

$('#datatable').on('change', '.MediaType  select' function(){
console.log('Changed');
    //Below line to get value of selected
console.log($(this, ':selected').val()));

});

2 个答案:

答案 0 :(得分:1)

由于.MediaType是包含跨度的td,您希望将更改事件绑定到span而不是td

您可以删除,

$('#datatable').on('change', '.MediaType select' 

获取所选值:

$(this).val();

答案 1 :(得分:0)

在尝试设置处理程序时,请确保#datatable在DOM中:

$(function () { // DOM ready handler
    $('#datatable').on('change', '.MediaType  select', function () {
        console.log('Changed');
    });
});

如果datatable也是一个动态元素,请使用最近的静态容器作为委托目标,这里因为我不知道你的HTML,我正在使用文档对象:

 $(document).on('change', '#datatable .MediaType  select', function () {
     console.log('Changed');
 });