Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

使用bind给回调函数传参

  一个很经典的问题:“用循环给一堆DOM元素绑定事件,点击时输出循环变量,并且不允许在DOM上添加垃圾数据”。这是不是非要自己弄个闭包来保存循环变量呢?如果是低版本IE浏览器确实有必要,现代浏览器就不必麻烦了。使用bind方法给回调函数传参吧。
<a href="JavaScript:">a</a>
<a href="JavaScript:">b</a>
<a href="JavaScript:">c</a>
<a href="JavaScript:">d</a>
<a href="JavaScript:">e</a>
<script>
var i,s=document.querySelectorAll("a");
for(i=0;i<s.length;i++)
  s[i].addEventListener("click",function(){
    alert(this); //bind的第一个参数可以在函数内使用this得到
  }.bind(i)/*这里对匿名回调函数bind一个参数*/);
</script>
  普通的DOM事件、计时器事件、甚至任何回调函数,这样传递固定参数都是很方便的。以前就很纠结,setTimeout的第一个参数是一个回调函数,给它加参数还得构造个闭包,麻烦死了。如果直接使用bind的话就省事多了~
网名:
3.80.32.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^