2009-02-11 3 views
7

Я использую $ (expr) .attr («hash», value) для установки атрибута «hash» для элемента привязки HTML «a» , но JQuery этого не сделает. но если я меняю выражение на div, то я могу установить атрибут «hash» в тег «div».JQuery, атрибут set для <a> tag

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

+0

Это может помочь, если вы разместили фактический HTML и jQuery, которые вы используете. –

ответ

6

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

13

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

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

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

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

0

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

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

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

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

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

$(expr).data('myHash', value);