2013-03-01 70 views
0

,我到了我的项目中,我检测箭头按键点并使用:基本jQuery的绑定

$(document).bind('keypress', function(event) { 
    alert("Handler for .keypress() called."); 
}); 

,并研究和发现我可以使用它代替:

$(document).keypress(function() { 
    alert("Handler for .keypress() called."); 
}); 

我最喜欢第二个,看起来更干净。他们出现做同样的事情。所以...

  • 我为什么要用.bind()
  • 不要这些做同样的事情吗?
+3

你不应该使用'bind'你应该使用'on'。 '.keypress'只是'bind' /'on'语法的简写。 – 2013-03-01 16:44:07

+0

我现在看到.bind()已被(正在)被弃用。 – maddogandnoriko 2013-03-01 17:03:28

回答

1

.keypress()或任何其它类似命名的功能.click().hover()等等都为.on()功能只是速记

+0

谢谢。文档确实说明它只是.on()绑定的简写。 – maddogandnoriko 2013-03-01 17:02:18

1

你给确实做同样的事情的两个例子 - 这两者都是非常不赞成的jQuery 1.7

的从http://api.jquery.com/bind/

对于jQuery 1.7,该的。 on()方法是将事件处理程序附加到文档的首选方法。

这些附加事件处理程序的旧方法要求在附加事件处理程序时DOM中存在元素。有更聪明的(更不用说更有效)的方式来做与更新的版本相同的 - 这通常被称为代表团。你应该退房.on()

0

这大多是个人偏好。你是对的,他们都做同样的事情...但是,他们已被弃用在最近版本的jQuery

正如安德鲁在您的评论中提到的,使用on,而不是bind

on为您提供了能够使用相同的功能,绑定的元素委托处理程序,可能会或可能不会以绑定初始化时存在的额外的好处:

$('#someExistingElement').on('keypress', handler); //normal binding 

$('#someExistingElement').on('keypress', '.some-child-element-that-doesnt-exist', handler); //delegate binding 

请原谅可怕的类姓名和身份证的...只有演示目的:d

1

jQuery文档是你的朋友!

  • .bind()已被弃用,所以正如这里所建议的,如果您使用的是jQuery 1.7+,则不应该使用它。
  • .on()是在jQuery 1.7+中附加事件处理程序的首选方式。
  • .keypress()是一些“特殊”,特定事件attachers的(其中大部分通常所说.on().bind()反正),并根据文档,可能有跨浏览器,浏览器版本和平台不同的行为之一。

鉴于这三个功能的信息,你最好的选择应该是使用.on()