2009-02-11 22 views
7

uso $ (expr) .attr ("hash", valor) para establecer un atributo "hash" para el elemento de ancla HTML "a" pero el Jquery no haría eso. pero si cambio expr a "div", entonces puedo establecer atributo "hash" en la etiqueta "div".JQuery, establecer atributo para <a> etiqueta

es este comportamiento una especificación xhtml? puedo establecer el atributo de etiqueta "id" de "a". ya que id es un atributo integrado para la etiqueta html "a".

+0

Podría ser útil si publicó el código HTML y jQuery real que está utilizando. –

Respuesta

6

Probablemente su problema es que no hay ningún atributo hash para una etiqueta <a>. Quizás esté buscando el atributo name, o tal vez desee cambiar el hash en el enlace href, en cuyo caso tendrá que analizar el texto del enlace y reemplazar el hash utilizando expresiones regulares.

13

para establecer un atributo de "control" para el elemento de anclaje HTML "a"

El < un elemento> (HTMLLinkElement) ya tiene un DOM Nivel 0 hash propiedad. Se usa como window.location.hash para leer o configurar la parte '... # anchor' al final de la URL a la que hace referencia el elemento href.

Configuración a.hash, ya sea directamente oa través del contenedor attr() de jQuery, simplemente establece el nombre del ancla en la URL del enlace. Usted podría decir deliberadamente que desea un atributo real llamando al método DOM a.setAttribute('hash', value), excepto que esto no funciona en IE6/7 debido a un error de larga data donde confunde atributos y propiedades.

Este es uno de los problemas al agregar atributos personalizados no estándar a los elementos, nunca se sabe cuándo va a entrar en conflicto con un nombre existente. HTML5 le sugerirá que limite sus atributos personalizados a nombres que comiencen con 'datos-', pero en general es mejor buscar otra forma de almacenar datos si puede.

0

Otra opción para configurar el hash. esto solo funciona donde la expresión devuelve un elemento a. Esto se debe a que el hash es una propiedad del elemento real dom.

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

si su necesidad de probar para ver si su un uso etiqueta de este

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

en el caso en el que realmente desea anexar algún atributo personalizado que recomendaría añadiendo el valor utilizando el método de datos

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