为什么不推荐使用jQuery 1.9+ attr()方法?
作为一名jQuery1.9 +软件开发人员,我是否可以在日常工作中“反对”使用attr()
方法?
正如许多问题所显示的,
关于“使用attr或者使用prop?”有很多困惑,并且从我的(开发者)的观点来看,对于attr()
方法的所有用法,我们可以使用prop
来代替:
prop(name,newvalue)
方法更改。 removeProp(name)
方法删除。 attr(name)
方法也会受到影响。 关于prop的“强类型”:比“html string value”更好(例如“checked”vs true)。 attr
方法返回未定义的attr
),那么我们需要在某个软件中使用这个attr
? 在表单中,“.val()方法是推荐的jQuery方法来获取或设置表单的值” 所以,在这个时候(2013年),在开发新的jQuery代码时我没有看到使用attr
方法的好理由......换句话说, 这是一个问题: 有一个很好的理由使用attr
方法在我的日常工作中?
.attr()
不会被弃用,因为它对于它的作用是有用的,并且是唯一正确的方法来做它的作用(使用每个元素的getAttribute
函数,它做同样的事情或者自己解析HTML )。 我们甚至进行这个讨论的唯一原因是因为jQuery(和一些旧的浏览器(咳嗽IE咳嗽))错误地将属性和属性混淆在一起,而混淆是他们在1.9中显然修复的。
.attr()
检索属性,而.prop()
检索属性。 这两者是不同的东西,并且一直都是正式的(尽管DOM通常具有与属性相对应的属性)。 如果你有一个<p whatever="value">
,那么whatever
不是浏览器识别的属性,你都会使用.attr()
来获取属性的值。 .prop()
甚至无法在大多数浏览器中看到它。
当您关心生成的DOM属性时,请使用.prop()
。 当您关心实际的HTML属性时,请使用.attr()
。 这不是一个真正的任何一件事或一件事; 你可以在相同的代码中使用两者,并且Universe不会内爆一次(假设你已经正确使用了它们)。 :)只要使用适合你当时工作的工具,就不要试图“折旧”那些没有损坏的东西。
我冒昧地为你准备了一把小提琴:
http://jsfiddle.net/5REVP/
尤其是这部分:
<div id="example" style="padding:10px"></div>
console.log("style");
var styleAttr = $("#example").attr("style");
console.log(styleAttr); // You get "padding:10px"
var styleProp = $("#example").prop("style");
console.log(styleProp); // You get a CSSStyleDeclaration object
“样式”示例清楚地显示属性与属性不同(检查控制台)。
为了可读性,可维护性和向后(以及向前)兼容性,您应该总是对给定任务使用正确的方法,否则方法可能会停止像您一样行为,尽管如此,.attr()方法是那个例子。
.attr()方法用于获取元素的属性,属性是SGML术语,指的是元素标签中包含的信息,您可以通过检查元素轻松读取该信息。
.prop()方法用于获取元素的DOM属性。
.attr()仅访问HTML属性,而.prop()将检索不在HTML元素上的属性。 请参阅文档:
例如,应该检索selectedIndex,tagName,nodeName,nodeType,ownerDocument,defaultChecked和defaultSelected并使用.prop()方法进行设置。 在jQuery 1.6之前,这些属性可以使用.attr()方法检索,但这不属于attr范围。 这些没有相应的属性,只是属性。
http://api.jquery.com/prop/
链接地址: http://www.djcxy.com/p/27561.html