Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery:在表行中查找select元素并侦听更改事件_Javascript_Jquery_Dom - Fatal编程技术网

Javascript JQuery:在表行中查找select元素并侦听更改事件

Javascript JQuery:在表行中查找select元素并侦听更改事件,javascript,jquery,dom,Javascript,Jquery,Dom,我有一个包含多个select元素的行表。我已经给这个select元素赋予了类。我需要根据类查找此select元素的on change事件 所以我用这个来找到元素 jQuery("table").on('click', 'tr', function () { jQuery(this).children().find('.select1').on('change', function () { //my action });

我有一个包含多个select元素的行表。我已经给这个select元素赋予了类。我需要根据类查找此select元素的on change事件

所以我用这个来找到元素

jQuery("table").on('click', 'tr', function () {
        jQuery(this).children().find('.select1').on('change', function () {
              //my action
        });
        //and same way the next select element
});
现在,我得到了on change事件,但是on change事件被多次触发。 最初一次,然后计数继续增加。我需要帮助,因为我已经被困很长时间了。谢谢

答复:

我想听听select的change事件,然后在该行中添加更多元素。现在我使用delegate()来监听selectchange事件,然后获取父级 使用jQuery(this.nexist('tr');附加其他表数据

jQuery('table').on('click','select1',function(){
    //get the parent
    jQuery(this).closest('tr');
    //Do the rest
});

谢谢不需要
tr
click事件,如果选择的元素是静态的,那么直接注册click处理程序

jQuery('table .select1').on('change', function () {
    //my action
});
如果它们是动态创建的,则使用


在您的代码中,每次单击tr时,新的更改处理程序将添加到该
tr
中的
select1
元素中,这不是您想要的,是吗?

事实上,事情是在第一个元素的select上,我正在填充下一个select元素,并在表中追加一行。所以select不是静态的。@user3273621然后使用事件委派模型I GAVES,这样它就像一个表有多个select和类select1一样。我需要找到哪一个被更改了。是的,我尝试了委派,但该事件再次被称为多重委派times@user3273621此代码只能执行一次。。可能在dom上准备好了
jQuery('table').on('change', '.select1', function () {
    //my action
});