javascript - 为什么使用addEvent或者attachEvent绑定的函数会自执行?直接使用onclick绑定的事件不会执行
PHP中文网
PHP中文网 2017-04-11 10:25:06
0
2
407

http://jsbin.com/werexoxeqe/e...
为什么使用addEvent或者attachEvent绑定的函数会自执行?直接使用onclick绑定的事件不会执行??

PHP中文网
PHP中文网

认证0级讲师

reply all (2)
大家讲道理

call会立即执行,用bind就ok了。改成这样咯

addEvent(document.querySelector('.icon-bofang'),'click',xxx.bind(obj)) document.querySelector('.icon-bofang').onclick = xxx.bind(obj)
    伊谢尔伦

    首先,addEvent这是一个人为封装的方法:

    然后你调用了这个方法

    addEvent(document.querySelector('.icon-bofang'),'click',xxx.call(obj))

    这个方法实际上做的事是:

    ele["on"+event]=fn;

    也就是

    document.querySelector('.icon-bofang').onclick=xxx.call(obj);

    这不就直接执行了么?
    更简单一点,你直接试试这句:

    document.querySelector('.icon-bofang').onclick=console.log('我立马就执行了');

    看出来了么?
    下面这句外面套了个匿名函数,而匿名函数没有被立即执行!

    document.querySelector('.icon-bofang').onclick=function(){ console.log('哥点击后才执行'); }

    OVER~

    **

    所以你传入方法参数应该这样:

    **

    addEvent(document.querySelector('.icon-bofang'), 'click', function() { xxx.call(obj); });
      Latest Downloads
      More>
      Web Effects
      Website Source Code
      Website Materials
      Front End Template
      About us Disclaimer Sitemap
      php.cn:Public welfare online PHP training,Help PHP learners grow quickly!