在现代JavaScript应用程序中使用DOM Level 0集合是否有一套商定的"最佳实践" ?(document.forms,document.images等)
在使用jQuery的应用程序中,我注意到,比如使用$(...).html()切换底层节点而不是使用来改变下拉列表的内容element.options[].这是因为最好避免使用DOM 0集合,还是因为jQuery使更改底层DOM结构变得更容易?
编辑:我想部分问题包括旧功能是否可靠的跨浏览器.我记得,曾经有一段时间,IE会<tbody>自动添加标签到你的桌子,而firefox则不会.这使得走在dom tree痛苦的跨浏览器.同样,在更改集合中的选项时element.options[]遇到问题.这些人是否可靠跨浏览器?
jQuery有一个attr()方法可以检索给定HTML属性的值.例如:
var foo = document.getElementById("foo");
$(foo).attr("id");
Run Code Online (Sandbox Code Playgroud)
但是,在性能方面,这不是最佳的,因为必须创建jQuery对象才能调用该attr()方法.这表现得更好:foo.id.
所以,理想情况下我们希望避免使用attr().但是,我们可以这样做(对于任何属性)?我相信foo.id并且foo.value是"安全的"(跨浏览器),但我记得有问题foo.href.
以下是我希望能够"直接"检索的各种属性的列表:
对于任何元素:foo.id,foo.name
用于锚定:foo.href,foo.target,foo.rel
对于图像,对象,内置页框:foo.src,foo.width,foo.height
对于表单元素:foo.checked,foo.selected,foo.disabled,foo.readonly,foo.type,foo.value,foo.action
所以问题是:上述表达式是否跨浏览器?我可以安全地使用它们吗?
检查此问题的文章的链接也很不错.
编辑(基于答案):粗体表达式使用不安全!