“外部”使用 jQuerybind
将事件处理程序绑定到事件。focus
“内部”Function.bind
正在创建一个绑定到特定上下文this
的函数(在调用函数时等于该上下文)。这不需要框架(但需要现代浏览器)。
因此,在这种情况下,调用Function.bind
确保每次input
都聚焦,onInputFocus
方法的上下文设置为当前值this
(可能是您正在使用的小部件/组件)。这是必要的,因为它通常是事件发生的元素。
MDN 上的文章Function.bind
对此有很好的解释。
为了更好地说明这是如何工作的,举一个简单的例子:
HTML:
<button id="test" type="button">Test</button>
<button id="test2" type="button">Test 2</button>
<div id="target"></div>
JavaScript:
var fill = function() {
$(this).css('background-color', 'yellow');
};
/* button#test will be colored yellow */
$("#test").bind("click", fill);
/* div#target will be colored yellow */
$("#test2").bind("click", fill.bind($("#target")));
在第一个事件绑定中,fill
调用并this
设置为#test
(因为那是被点击的元素)。
在第二个中,fill
再次调用,但由于调用事件绑定内部而this
被设置为。#target
Function.bind
示例:http: //jsfiddle.net/GK7L8/