2011-04-07 32 views
8

que tiene un conjunto de enlaces aleatorios, así:jQuery - agregar/añadir valor a "rel" atributo

<a rel="foo"> ... </a> 
... 
<a> ... </a> 

Algunos de ellos pueden tener un atributo rel, otros no.

¿Cómo se puede agregar un atributo rel con un valor para cada enlace, y si el enlace ya tiene uno, agregue mi valor a los valores/valores existentes?

Además, ¿cómo puedo omitir los elementos que tengan un cierto atributo rel, como rel="ignore"?

+0

¿Estás haciendo esto por razones de SEO? Los cambios realizados en el lado del cliente no se tendrán en cuenta para la mayoría de las arañas de los motores de búsqueda. – daniellmb

+0

no, quiero agrupar enlaces de imagen en grupos en función de su contenedor, y 'rel' se usa con un complemento lightbox para identificar las galerías – Alex

Respuesta

16

corto 'n dulce:

$("a[rel!='ignore']").each(function() { 
    this.rel += 'theValue'; 
}); 

You can try it here.

+0

... y sí, agregará un rel a los anclajes sin atributos rel. – karim79

1
var toModify = $('#xxx'); /* or how ever you identify you link */ 
var currentAttr = toModify.attr('rel'); 
if(currentAttr != 'ignore'){ 
    toModify.attr('rel', currentAttr + '_asd'); 
} 
2

Esto debería funcionar bien:

$("a").each(function(index) { 
    var curRel = $(this).attr("rel"); 
    if (curRel !== "ignore") 
     $(this).attr("rel", curRel + " my value"); 
}); 

iteración simple a través de todos los anclajes, añadiendo su valor. Si rel no existe, curRel será una cadena vacía para que el código no se rompa.

1

Utilizando sólo attr:

var add = "some rel to add"; 

$('a[rel!="ignore"]').attr('rel', function (i, old) { 
    return old ? old + ' ' + add : add; 
}); 
1

Un poco prolijo, pero esto debe hacerlo (http://jsfiddle.net/ dGGFN /):

var myValue = 'abc'; 

$.each($('a'), function(idx, item) { 
    var a = $(item); 
    var rel = $(a).attr('rel'); 
    $(a).attr('rel', rel + myValue); 
}); 
Cuestiones relacionadas