300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 【JQ】动态添加的元素无法触发绑定事件的解决办法

【JQ】动态添加的元素无法触发绑定事件的解决办法

时间:2020-07-15 05:44:57

相关推荐

【JQ】动态添加的元素无法触发绑定事件的解决办法

情景

如上面的模态框,点击左边的添加按钮,会把整个div添加到右边,点击右边的删除按钮,则把整个div添加回左边,就类似于穿梭框的样子。

不难,下面是一开始想到的方案:

$('#SelectedDevice button').click(function(){$(this).text('添加');let this_device = $(this).parent().parent();this_device.remove();//从待选设备框中移除$('#DeviceToBeSelected').append(this_device);autoHeight('DeviceToBeSelected', 'SelectedDevice');//左右div高度自适应});

功能是实现了,但是发现一个问题,就是,我把左边的div.card添加到右边后,再点击button按钮,触发不了对应的事件了。凡是动态添加的元素都出现了这个情况,而页面中原先写死的却不受影响。

看了一下文档,找了一下资料,问题产生的原因应该是这个:

jquery的事件绑定在页面加载时就已经完成,所以之后动态添加的class将无法绑上事件。

解决方案

旧版本的JQuery说是用$().live()

新版本的JQuery则是用$('父元素').on('click','子元素',function(){})

即JQ通过绑定父元素来监听其下面的子元素是否发生click事件。这个父元素一定要写死的,没有的话,就绑定在<body>上好了。

方案代码:

$('#SelectedDevice').on('click','button',function(){$(this).text('添加');let this_device = $(this).parent().parent();this_device.remove();//从待选设备框中移除$('#DeviceToBeSelected').append(this_device);autoHeight('DeviceToBeSelected', 'SelectedDevice');});

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。