关于事件代理的问题

来源:2-3 为搜索框添加功能--事件代理和显示隐藏下拉层

weixin_慕仰4083625

2019-11-27 19:13:59

$layer.on('click', '.search-layer-item', function() {//利用冒泡机制事件代理,就不用给所有.search-layer-item绑定事件,占用资源
        //focus,blur不能事件冒泡,无法事件代理
        $input.val(removeHtmlTags($(this).html()));
        $form.submit();
    })

请问老师事件代理$layer.on('click', '.search-layer-item', function() {这种写法是固定的吗

还有为什么用事件代理以后这段代码就可以写在done外面了,.search-layer-item的内容不是还在一直变化吗?

写回答

1回答

好帮手慕夭夭

2019-11-28

同学你好,问题解答如下:

1.在jQuery中这个是固定的写法。原生js也可以实现,可以了解一下。如下给父元素绑定事件,当点击子元素时,通过e.target获取当前点击的元素。

http://img.mukewang.com/climg/5ddf2b2b09cbe34e06680278.jpg

2. 事件代理,本质上绑定事件的是父节点,子节点存不存在都行。所以代码可以放在done外面。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

0

0 学习 · 14456 问题

查看课程