JQuery, установите атрибут для тега <a> - PullRequest
7 голосов
/ 11 февраля 2009

Я использую $ (expr) .attr ("hash", value), чтобы установить атрибут "hash" для элемента привязки HTML "a" но Jquery не будет этого делать. но если я изменю expr на "div", то я могу установить Атрибут "hash" для тега "div".

это поведение спецификация xhtml? я могу установить «id» из «a» атрибута тега. поскольку id является встроенным атрибутом для HTML-тега "a".

Ответы [ 3 ]

14 голосов
/ 11 февраля 2009

для установки атрибута "хэш" для элемента привязки HTML "a"

Элемент (HTMLLinkElement) уже имеет свойство DOM Level 0 hash. Он используется как window.location.hash для чтения или установки части «... # anchor» в конце URL-адреса, на который ссылается элемент href.

Установка a.hash, напрямую или через оболочку attr() jQuery, просто устанавливает имя привязки в URL ссылки. Вы могли бы преднамеренно сказать, что хотите получить фактический атрибут, вызвав метод DOM a.setAttribute('hash', value), за исключением того, что это не работает в IE6 / 7 из-за давней ошибки, которая путает атрибуты и свойства. 1015 *

Это одна из проблем с добавлением нестандартных атрибутов к элементам, вы никогда не знаете, когда они будут конфликтовать с существующим именем. HTML5 предложит вам ограничить ваши пользовательские атрибуты именами, начинающимися с «data-», но в общем случае лучше всего найти другой способ хранения данных, если вы можете.

6 голосов
/ 11 февраля 2009

Возможно, ваша проблема в том, что для тега <a> нет атрибута hash. Возможно, вы ищете атрибут name, или вы хотите изменить хеш в ссылке href, и в этом случае вам придется проанализировать текст ссылки и заменить хеш с помощью регулярных выражений.

0 голосов
/ 11 февраля 2009

Еще одна опция для настройки хеша. это работает только тогда, когда выражение возвращает элемент. Это потому, что hash является свойством фактического элемента dom.

$(expr).each(function() {
  this.hash = value;
});

если вам нужно проверить, чтобы узнать, использует ли это тег

$(expr).is('a').each(function() {
  this.hash = value;
});

в случае, если вы действительно хотите добавить какой-либо пользовательский атрибут, я бы порекомендовал добавить значение, используя метод данных

$(expr).data('myHash', value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...