需求:动态添加的多个dom对,需要分别绑定事件。而且要往事件里面传参。
遇到的几个问题:
1.动态添加dom,因为是动态添加的dom,不能使用 $(‘#dom的id’).on(‘click’, function () {}); 这种方式 必须用$(document).on
$(document).on的原型有两种
2.$(document).on的selector用class还是id?如果用class是每个dom绑定一次还是添加后所有dom按class绑定一次?
不能每个dom绑定一次,这样前面添加的dom都被多次。
所有dom按照class绑定一次,这样不能分别传参。
最后每个每一个id有一个on绑定。
1 | for (let dataKey in data) { |
3.seletor里面的冒号需要转义
4.添加dom成功了也通过事件传参成功了。但是如果一个dom被添加了两次就会重复,所以每次添加前先把之前的remove。问题出现了,虽然dom没了,但是它绑定的事件还在,又会一个第二次添加的dom,绑上了第一次的事件,身上有了两个事件。
解决:每次remove dom之前把它这个id绑定的事件给$(document).off掉 。 (因为之前是通过id给on上的所以现在也用id给off掉 我试了id给on上 用class给off掉 貌似不行 不确定)
1 |
|
5.得保证每个dom唯一id
6.我发现其实没必要硬要通过绑定事件传参,每个dom通过自己id从全局变量里读就行了。
7.我发现layui那lay-filter实现了这个功能(动态添加的dom绑定了能传参的事件) 而且我以前还用过 想看看他怎么实现的 完全看不懂