使用jquery Bind方法,这是我以前从未见过的

chr*_*kas 3 jquery

试图熟悉jQuery,我遇到了一些我无法理解的示例代码.它指的是绑定方法及其使用方式.这里是

$('textControl').bind(($.browser.opera ? 'keypress', 'keydown') + '.autocomplete', function(event) { code...});
Run Code Online (Sandbox Code Playgroud)

我理解选择按键或keydown,但我不明白为什么他们在偶数处理程序名称上附加.autocomplete?

如果有人能够散发一些很棒的光

谢谢

Dmi*_*kov 11

让我一步一步解释.

$('textControl').bind(
Run Code Online (Sandbox Code Playgroud)

绑定到textControl

($.browser.opera ? 'keypress', 'keydown')
Run Code Online (Sandbox Code Playgroud)

如果浏览器是opera,则返回keypress的三级表达式,否则返回keydown.

'.autocomplete'
Run Code Online (Sandbox Code Playgroud)

自动完成是jQuery插件添加到keypress事件对象的自定义事件.所以基本上他们只是将它分组以使其更有条理,但它是一个自定义命名空间事件.

所以实际上,事件附加到keypress/keydown,但是您可以使用命名空间绑定和取消绑定,从而保持工作空间的有序性.


duc*_*lip 5

这是jQuery的一个名为Namespaced Evenets的功能,它经常在插件中使用,因为它允许一个简单快捷的方式让插件只能操纵它自己的事件.