jQuery has an attr()
method which retrieves the value of a given HTML attribute. For instance:
var foo = document.getElementById("foo");
$(foo).attr("id");
But, performance-wise this is not optimal since an jQuery object has to be created just to call the attr()
method. This performs better: foo.id
.
So, ideally we would want to avoid using attr()
. But, can we do that (for any attribute)? I believe foo.id
and foo.value
is "safe" (cross-browser), but I remember having issues with foo.href
.
Here is a list of various attributes that I would like to be able to retrieve "directly":
For any element: foo.id
, foo.name
For anchors: foo.href
, foo.target
, foo.rel
For images, objects, iframes: foo.src
, foo.width
, foo.height
For form elements: foo.checked
, foo.selected
, foo.disabled
, foo.readonly
, foo.type
, foo.value
, foo.action
So the question is: Are the above expressions cross-browser? Can I use them safely?
A link to an article which examines this issue would also be nice.
Edit (based on the answers): The expressions in bold are not safe to use!