Если вы уже используете jQuery, делайте то же самое, что и jQuery. То есть $(element).attr('name')
. Кросс-браузерная совместимость на самом деле не проблема с этим; все браузеры понимают DOM и в основном соответствуют его спецификациям. Реальная вещь здесь - последовательность . Вам действительно не нужно привыкать делать что-то вроде jQuery здесь, DOM там, и какой-то недоделанный хакерский путь вон там.
Если вы еще не включили jQuery, я бы не стал делать это сейчас, просто чтобы получить атрибут элемента. element.getAttribute('name')
всегда должно работать. element.name
, вероятно, будет работать для важных атрибутов, но обратите внимание, что "важные атрибуты" не включают в себя все! Он почти никогда не включает второстепенные вещи, такие как атрибуты rel и тому подобное, или что-либо, что не является стандартным HTML ... и значение свойства может отличаться от атрибута, чтобы быть более полезным для сценариев. Например, свойство style
на самом деле является объектом, содержащим проанализированные CSS-стили, а не необработанную строку ... а свойство selected
для <option>
на самом деле является логическим значением, а не "selected"
или ""
. Иногда свойство и атрибут даже имеют разные имена! (Атрибут class
соответствует свойству с именем className
, и любой атрибут с -
в нем, если он вообще соответствует свойству, будет изменять имя свойства так, чтобы оно было совместимо с правилами именования идентификаторов JS . http-equiv
, например, становится httpEquiv
.) Есть еще куча подобных ошибок. Просто используйте getAttribute
, если вы на самом деле заботитесь об атрибуте , и вы еще не поглощены спором jQuery.
Если вы на самом деле заботитесь, например, о том, установлен ли флажок (то есть свойства элемента, в отличие от строки, которая находится в его атрибуте "checked"), используйте element.checked
или $(element).prop('checked')
(и те же аргументы применимы и к jQuery против vanilla JS).