绑定事件使用JQuery的bind()认为比简单地做onclick ='bla(this)'更好,为什么?Javascript:使用jquery的bind()比使用onclick ='bla()'更好的为什么?
谢谢!
绑定事件使用JQuery的bind()认为比简单地做onclick ='bla(this)'更好,为什么?Javascript:使用jquery的bind()比使用onclick ='bla()'更好的为什么?
谢谢!
因为Unobtrusive JavaScript (UJS)是新的常态。
对于我来说,标记的行为,从分离是最大的好处,但也有其他的东西,很方便吧,每个人都喜欢不同的方面。
@Esailija正确地指出,jQuery让UJS 多容易,在工作中,浏览器兼容性,浏览器的解决方法的层面来讲,等等。 UJS不依赖依赖于jQuery上的,但JS库已经在更广泛的功能范围内实现了可行性。
使用jQuery事件,您可以获得6年的错误修复,事件对象规范化,命名空间,对事件的支持,如mouseenter,mouseleave,focusin和focusout,这些事件原本是专有的IE事件和事件委托。
附带任何种类的JS(不只是jQuery的)事件,您将获得:
而如果你要动态生成HTML:
理智,你不必连接字符串来生成代码,你只写事件处理程序代码就像任何其他代码,而不必担心你的字符串是如何先被解释为一个JavaScript字符串结束,然后通过HTML,然后作为JavaScript代码(是的,三个阶段。我甚至没有得到第一次修订如下右图):
var html = '<div onclick="alert(\''+someVar+'\'+\'hello\');"></div>'
是不太容易写。比较
$("<div>", {
click: function() {
alert(someVar + "hello");
}
});
在我的经验是有代价的,应反对使用他们的利益进行加权抽象。
在jQuery中的情况下,我发现,当时它为我节省了远远超过任何缺点。举个例子,你将如何在标准的javascript中编写下面的例子。
$("ul").on("click", "li", function(){ });
这个jQuery method附加的事件处理程序的所有现在和将来的li元素。
实现这个功能并不是一个简单的任务,并通过使用jQuery您使用的是高质量的代码库,试图抽象浏览器的差异,并帮助你专注于编程。
保持JavaScript代码进行标记确实是一个不错的主意。 – Pointy 2012-07-24 21:52:34
如果javascript对于页面有意义是必要的,该怎么办?你会在脚本标签中嵌入必要的部分,然后从onclick钩住的内联脚本中调用“可选”库吗? – Mithon 2012-07-24 21:54:48
HTML是关于**内容**,而不是行为。如果某些HTML元素的行为应该明显反映含义,那么他们应该有类似“动画”或“信息”等的类。 (也就是说,我不是一个形式主义者或狂热分子或其他任何人;事实上我非常务实:-) – Pointy 2012-07-24 22:00:08