jquery循环绑定事件需要注意坑
jquery给元素绑定事件的写法
//方法一 $(a).bind("click", menuClick); //方法二 $(a).bind("click", {data:menu}, menuClick);
当无需进行参数传递时可以使用方法一,但是在大多数情况下都是需要将一部分信息传入到click事件中进行处理的,此时正确的方式是采用方法二的写法。
错误的写法如下:
//错误写法一 $(a).bind("click", function(){ menuClick(menu); }); //错误写法二 $(a).bind("click", menuClick(menu));
错误写法一的结果为所有元素绑定的事件传入的数据全部相同并且是最后一次循环的数据。
错误写法二的结果为在代码执行此行时事件就是执行。
注意:
在正确的绑定事件的写法中,需要注意this的作用域,this指向为绑定事件的元素。
//此种情况this的指向为绑定该事件的元素,在menuClick中的this就是指向menuClick方法 $(a).bind("click", {menu:menu}, function(event){ menuClick(this, event.data.menu); });