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

Bind live change listener to a select box

本文关键字:选择 绑定 侦听器 实时      更新时间:2023-09-26

我有一个表,其中一列包含一个选择框。我需要将侦听器绑定到任何选择活动,以便根据更改的行的选择框来更改表行的某些属性。因此,很明显,我没有选择框的修复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()));
});

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

您可以删除,

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

获取所选值:

$(this).val();

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

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

如果数据表也是一个动态元素,那么使用最接近的静态容器作为委托目标,因为我不知道你的HTML,所以我使用的是文档对象:

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