4 回答
TA贡献5条经验 获得超11个赞
你说的是jQuery中的bind还是js函数的bind方法,jQuery中的bind没什么说的,就是事件绑定的东西
js中的bind用在你要使用的函数有用到this,而你在其他地方引用了这个函数,而且是以xxx.another = myfunction来引用的,这种引用方式在事件绑定,各种函数作为参数的时候出现,引用调用这个函数的操作是xxx.another(); 而不是直接myfunction(); 所以作用域就变成xxx了,而this只认作用域,就会出现预期之外的结果。
为了解决这个问题,ECMAScript5中对所有函数引入了方法bind(context),context代表作用域,比如上面例子的xxx,引入bind后可以这么写xxx.another = myfunction.bind(yourcontext);然后你的函数里的this就指向yourcontext而不是xxx了
bind的context参数后还可以接参数,不过那就是函数柯里化了,这个有兴趣可以去看看javascript高级程序设计的高级技巧中的函数柯里化
TA贡献102条经验 获得超139个赞
bind是给元素添加一个或者多个事件,this代表当前的元素;
如:
$("p").bind("click",function(){
$(this).hide()
});
给元素p添加一个事件,而下面的this就是带表p本身,然后执行hide事件(隐藏)
TA贡献24条经验 获得超19个赞
HTML
<div id='hello' >h</div>
Js
$('#hello').bind('click',function(){alert(this)});
返回
object
this指div标签,bind,第一个参数是事件,第二个参数是函数,意思是id为hello的标签绑定点击事件触发封装的函数,在函数里this指这个标签
TA贡献13条经验 获得超3个赞
你需要给一个元素绑定事件时就可以用bind,事件可以在jQuery手册上找,this,就是,谁调用就是谁,$("#btn").bind("click",function(){$(this).val("我就是this");}),这里的this就是id为btn 的那个元素。
添加回答
举报