当我更改innerHtml时,引导选项卡事件不再工作
When I am changing the innerHtml, bootstrap tab event is not working anymore
这是我的HTML代码:
<ul class="nav nav-tabs">
<li class="active"><a href="#menu1" data-toggle="tab">menu1</a></li>
<li><a href="#menu2" data-toggle="tab">menu2</a></li>
</ul>
这是我的javascript代码,它改变了内部HTML:
document.body.innerHTML = document.body.innerHTML.replace( text1, text2 );
这是我处理事件的jquery代码:
$('a[data-toggle="tab"]').on( 'shown.bs.tab', function (e) {
alert('test');
});
当用于更改innerHTML的java代码正在运行时,tab的事件不再工作
问题是,当您替换内部html时,绑定了事件处理程序的所有元素都会被销毁,并且会创建没有添加任何事件处理程序。
这种方法还有进一步的问题,因为在这些元素上初始化的任何插件都会被销毁,所以这些插件也无法工作。
因此,正确的解决方案是迭代每个目标元素,然后替换必要的内容。
至于单独考虑事件处理程序,您可以使用事件委派,但引导插件可能仍然不起作用,因为在新元素中插件没有初始化。
document.body.innerHTML = document.body.innerHTML.replace(text1, text2);
$(document.body).on('shown.bs.tab', 'a[data-toggle="tab"]', function (e) {
alert('test');
});
- 动态创建的元素上的事件绑定
使用Jquery来处理替换:
$(document).fund('body').html(text);
相关文章:
- 如何在触发事件后选择select选项
- 当我更改innerHtml时,引导选项卡事件不再工作
- Javascript事件;在新选项卡中打开”;
- 使用java脚本更改onClick事件中菜单选项卡的颜色
- 选项卡面板事件
- 如何使用选项useCSS set true为bxSlider加载onSlideAfter()事件
- 更改事件的fullPage.js选项
- 选择选项是添加或删除事件
- chrome中的onmouseover(下拉选项标记)事件不起作用-php,javascript
- 如何将点击事件附加到引导选项卡
- jquery点击bootstrap 3选项卡上的事件
- 单击事件在jquery easyui多选项卡中不起作用
- 如何防止onclick事件在select选项中触发
- 在Jquery easyui中,多个选项卡提交按钮点击事件正在重定向到主页(第一个)选项卡
- 选择选项淘汰赛事件不起作用
- jQuery UI 选项卡取消选择事件或在选择时保存上一个选项卡
- 离子事件-支架处于保留/选项卡上父/子问题
- 在iPad上,如何通过Javascript事件在选择元素上设置focus()而不显示选项
- Shift+选项+命令+左键单击的事件
- jQuery - 在选择选项事件时