js原生事件绑定

作者: 念旧的阿蛮 | 来源:发表于2017-09-18 21:45 被阅读0次

关于事件绑定的面试题和实际运用

如何编写一个通用的原生事件监听函数?

 // 简单封装一个通用事件绑定

    function bindEvent(elem,type,fn){
        elem.addEventListener(type,fn);
    }

    var a = document.getElementById('link1');

    bindEvent(a,'click',function(e){
        e.preventDefault();  // 阻止标签默认行为
        alert('click')
    });

// 关于低版本时间兼容
    // 使用attachEvent绑定事件

关于低版本的浏览器我们只需要了解就好了,如果你在面试中如果要求要对很低版本的浏览器做兼容的话,建议你还是换一个机会去面,处理低版本浏览器的兼容是浪费生命的一件事情。

使用事件冒泡实现代理事件绑定?

在实际工作运用中,比如这么一个场景:我们要对一页的多个图片项做事件绑定,如果我们一个个对图片绑定是一件很麻烦的事情,而且还有对重新加载的图片做重新的绑定这是个很麻烦的时候。所以我们使用事件冒泡实现代理绑定事件就完美解决了这些问题.。

这里我们使用绑定父元素的点击事件,然后使用子元素的冒泡事件触发点击,然后通过e.target(事件目标对象)判断触发事件元素的那个。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>dom事件</title>
</head>
<body>
    <a href="#" id='link1'>事件绑定</a>
    <div id="div1">
        <a href="#" id="a1">1</a>
        <a href="#" id="a2">2</a>
        <a href="#" id="a3">3</a>
        <!-- 一会随时新增更多的a便签 -->
    </div>
 <script>
var div1 = document.getElementById('div1');

    div1.addEventListener('click',function(e){
        e.preventDefault();
        var target = e.target;
        if(target.nodeName === 'A'){
            alert(target.innerHTML);
        }
    })


    </script>
</body>
</html>

所以我们现在重新封装通用事件的件兼容函数


    // elem:元素  type:事件类型  selector:目标元素节点的名称  fn:事件触发方法
    function bindEvent(elem,type,selector,fn){
        if(fn==null){
            fn = selector
            selector = null
        }

        elem.addEventListener(type,function(e){
            var target;
            if(selector){
                target = e.target
                // matches  target是
                if(target.matches(selector)){
                    fn.call(target,e)
                }
            }else{
                fn(e)
            }
        })
    }

    bindEvent(div1,'click','a',function(e){
        alert(e.target.innerHTML)
    })

相关文章

  • React基础第二节知识点

    1.绑定事件使用原生绑定事件onClick2.绑定事件函数必须传this(原生JS this作用域的问题)3.使用...

  • React-阻止事件冒泡

    react中分为合成事件、原生事件 合成事件:在jsx中直接绑定的事件,如 原生事件:通过js原生代码绑定的事件,...

  • 原生JS事件绑定方法以及jQuery绑定事件方法bind、liv

    一、原生JS事件绑定方法: 1、通过HTML属性进行事件处理函数的绑定如: <a href="#" oncli...

  • vue 事件处理

    v-on:eventName 绑定事件 事件修饰符 对应原生JS .prevent阻止默认事件-----.prev...

  • 原生 js 事件绑定

    源码: 更多咨询: 1、Git 汇总2、VUE3、前端开发

  • js原生事件绑定

    关于事件绑定的面试题和实际运用 如何编写一个通用的原生事件监听函数? 关于低版本的浏览器我们只需要了解就好了,如果...

  • JavaScript中绑定事件的方法与区别

    简介 在编写网页过程中,我们需要给页面上的元素添加事件(绑定事件)。在 原生JS 中,绑定事件有两种处理方式:DO...

  • 20、jQuery 事件机制

    20、jQuery 事件机制 原生js事件与jQuery事件: (1)用原生的js给div注册事件 原生js注册相...

  • 原生js实现on与off 方法

    @拭目以待:原生js实现on与off 方法 使用过jQuery的同学,应该对事件绑定方法 .on() .off()...

  • 03.JQuery的事件处理

    JQuery提供了事件绑定机制,类似于原生JS中的addEventListener形式。 1. ready() D...

网友评论

    本文标题:js原生事件绑定

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