2010-11-16 33 views
2

我喜欢jQuery在使用其“绑定”方法时包装事件的方式。然而,设置绑定很尴尬。有什么方法可以将html的易用性(例如onKeyPress="foo(event)")与jQuery独立于浏览器的事件处理优点结合起来吗?使用html附加jquery事件处理程序?

+0

到目前为止,它看起来像答案是“否”:) – JoelFan 2010-11-16 19:26:07

+0

这可能是这种情况,取决于您对* ease *的看法。由于jQuery(作为JavaScript)完全在JavaScript端操作,所以对HTML端的唯一访问就是DOM API提供的桥梁。当然,HTML提供的桥梁是inline'on [event]'属性。所以你真的看着这个或那个。 – user113716 2010-11-16 19:37:12

+0

@patrick,sux2bme – JoelFan 2010-11-16 19:39:00

回答

0

一个好主意是实际分开这两个,让你的HTML干净和js在一个单独的位置。你可以尝试像$('a').click(...)这样的快捷方式,而不是$('a').bind('click'...),但就是这样。我个人喜欢将绑定与标记分开。

+0

您的建议假设我想将每个'a'标记绑定到完全相同的处理程序 – JoelFan 2010-11-16 18:13:47

+0

这仅仅是一个示例.. – cambraca 2010-11-16 18:16:41

+0

我知道,但我的观点是没有通用模式 – JoelFan 2010-11-16 20:31:34

1

您的意思是?

function foo(event) { 
    alert(event.target); 
} 

$('.someSelector').keypress(foo); 

无论是在HTML或者你需要创建一个功能foo JavaScript的方式,所以也许这是更接近你所期待的。

我不确定你对jQuery的处理程序绑定感到尴尬。

+0

如果HTML元素没有类或ID,那么“someSelector”是什么?难道不得不声明一个元素为HTML,然后返回并以某种方式将其定位到DOM中,并将一个事件处理程序附加到文件中的不同位置,而不是仅仅声明元素及其事件处理程序时间? – JoelFan 2010-11-16 18:12:57

+0

@JoelFan - jQuery完全是从DOM中选择,然后执行操作。如果元素没有一致的标识符,并且你不希望为了选择的目的而添加一个标识符,那么我想我不得不问一下你所做的jQuery处理程序绑定是什么,这足以说服你计划你的标记以适应DOM选择。或者我错过了你的观点? – user113716 2010-11-16 18:27:27

+0

我喜欢jQuery独立于浏览器的“包装器”,它为您提供事件处理程序... http://api.jquery.com/category/events/event-object/...我不同意jQuery是所有关于从DOM中选择......这是关于独立于浏览器的,更简单的客户端脚本......终于...我不是“计划”我的标记......我正在修复没有开发的现有标记jQuery – JoelFan 2010-11-16 19:02:38

1

你可能不想这样做。

您可能需要阅读event delegation in JavaScript,这些jquery绑定方法可以为您处理整齐。

这里的亮点:

事件代表团有几个好处 到Web 应用程序的性能:

更少的功能来管理。占用内存少 。您的 代码与DOM之间的关系更少。当 通过innerHTML改变DOM时,不需要担心 关于移除事件处理程序。

你最好不要使用jQuery的结合佣工像$ whatever.click(FN)等

其实here is another question on SO引用我这样做,也可以帮助同一篇文章。

相关问题