如果我们在Bootstrap-table
的行(td)中有添加一个.btn-testbtn
的按钮,通常我们会在JS中使用
$(document).on('click', '.btn-testbtn', function(){ console.log(1234); return false;});
给按钮绑定上事件,但是在这里会有一个问题就是,明明我们使用了return false;
来阻止事件的冒泡,为什么仍然还会执行表格td
的点击事件,造成当前行被选中。
分析Bootstrap-table
的代码发现在1843行使用了
this.$body.find('> tr[data-index] > td').off('click dblclick').on('click dblclick', function (e) {});
来绑定事件,可以看到我们的按钮事件是绑定在document
上的,而td的事件是直接绑定的。td作为a的父元素,优先级更多,事件被优先执行了,那现在我们该如何解决这个问题呢?办法就是提升.btn-testbtn
按钮的优先级。
此时我们需要在表格主体内容渲染完成后再来绑定事件。
table.on('post-body.bs.table', function (e, settings, json, xhr) { $(">tbody>tr[data-index] > td", this).off('click').on('click', "a.btn-dialog", function () { console.log(123); return false; });});
这样即可提升td中.btn-testbtn
按钮的事件优先级。
希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。