美文网首页
15.JavaScript事件委托

15.JavaScript事件委托

作者: 农场主的鸡 | 来源:发表于2017-03-20 08:33 被阅读41次

15.1 问题

ul>li*1000

假如我们要对li的点击事件进行处理,通常情况下我们会这么写:

$(function(){
    $('li').click(function(e){
        console.log($(this).index()); // 输出当前下标
    })
});

但是这里li有1000个,每个li都做点击事件绑定,性能上是很消耗的。

这时事件委托就派上用场了。我们可以把监听处理转移ul上,当对li进行点击的时候,点击事件会传递到ul上并触发事件。这时候我们可以通过事件的target属性获取到真正点击的元素,并进行处理。

$(function(){
    $('ul').click(function(e){
        if(e.target.nodeName == 'LI') {
            console.log($(e.target).index()); // 输出当前下标
        }
    })
});

15.2 其他使用场景

事件委托,除了上面提到的避免对数量庞大的重复节点进行事件从而减少性能消耗外,还有一个很实用的使用场景就是:避免对新添加的节点进行重复的事件绑定。

这样,我们就可以再添加新节点的时候,不需要再考虑单独为新添加的节点进行事件绑定,从而减少冗余的而不必要的工作量。

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <style type="text/css">
        ul li {
            margin: 5px;
            background-color: #7B68EE;
        }
    </style>
    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
    <script>
        $(function(){ 
            $('ul').click(function(e){
                if(e.target.nodeName == 'LI') {
                    $('ul').append( $('<li>/'));
                }
            })
        }); 
    </script>
</head>
<body>
    <ul>
        <li></li>
        <li></li>
    </ul>
</body>
</html>

15.3 jQuery的delegate函数

上面的实现,我们也可以使用jQuery封装的事件委托函数delegate,写法如下:

$(function(){           
    $('ul').delegate('li', 'click', function(){
        $('ul').append( $('<li>/'));
    });
}); 

相关文章

  • 15.JavaScript事件委托

    15.1 问题 假如我们要对li的点击事件进行处理,通常情况下我们会这么写: 但是这里li有1000个,每个li都...

  • 事件委托

    ------------------事件委托----------------- 事件: 事件委托: 原理: 冒泡 ...

  • web前端面试题@六(事件委托)

    *说到事件委托,我们首先先要知道什么是事件委托—— · 那么什么是事件委托呢??? JS里的事件委托就是当事件...

  • 前端常见面试题(十一)@郝晨光

    什么是事件委托?为什么要用事件委托? 什么是事件委托? 事件委托,又称事件代理,就是将元素的事件处理交由父元素或者...

  • 十六、DOM之事件委托 ------ 2020-01-05

    1、事件委托: 2、事件委托的优势:

  • JQuery事件委托

    JavaScript(jQuery)中的事件委托 一:什么是事件委托? 事件委托是利用事件冒泡,只指定一个事件...

  • 事件委托笔记

    事件委托原理:事件冒泡机制。 什么是事件委托: 事件委托——给父元素绑定事件,用来监听子元素的冒泡事件,并找到是哪...

  • 事件委托

    事件委托 什么是事件委托(事件代理): 事件委托就是利用事件冒泡的原理,将事件注册到父元素上,减少子元素的事件注册...

  • JavaScript 事件委托

    1. 事件委托 事件处理程序过多的解决方法就是事件委托,事件委托利用的是事件冒泡。事件冒泡:事件由最具体的元素接收...

  • 原始类型与事情委托

    1.绑定事件: 二、事件冒泡与事件捕获 事件委托 案例见事件委托 计时器

网友评论

      本文标题:15.JavaScript事件委托

      本文链接:https://www.haomeiwen.com/subject/sdlbnttx.html