2010-11-18 7 views
6

? Estoy acostumbrado a jquery, pero necesito usar el marco Prototype para este proyecto. Tengo una lista de imágenes (jpg, png y gif), algunas de las cuales tienen enlaces con la etiqueta <a>. Necesito agregar un atributo rel solo a esas etiquetas <a> que son enlaces directos a jpg, gif y png. Los href no tienen un estilo similar a no tener que terminar en .jpg, .png o .gif. Puedo agregar el rel a un solo enlace con href específico, pero no puedo encontrar la manera de seleccionar todos esos enlaces. Un ejemplo de los vínculos que deben ser manipulado:¿Cómo puedo seleccionar todos los enlaces a las imágenes en el prototipo

<a href="images/01.jpg"><img src="images/01.jpg" width="500" /></a> 
<br> 
<a href="http://www.example.com/"><img src="images/02.jpg" width="500"></a> 
<br> 
<a href="images/03.png"><img src="images/03.png" width="500" /></a> 
<br> 
<img src="images/04.jpg" width="500"> 
<br> 

Y el resultado deseado:

<a href="images/01.jpg" rel="whatever"><img src="images/01.jpg" width="500" /></a> 
<br> 
<a href="http://www.example.com/"><img src="images/02.jpg" width="500"></a> 
<br> 
<a href="images/03.png" rel="whatever"><img src="images/03.png" width="500" /></a> 
<br> 
<img src="images/04.jpg" width="500"> 
<br> 

Imagino que el código final será algo como:

<script type="text/javascript"> 
Event.observe(window, 'load', function() { 
    $$('a[href="*.jpg","*.png"]').each(function(link){ 

      link.writeAttribute('rel','whatever'); 

    }); 
}); 
</script> 

Pero no se puede obtener el comodín (*) para que funcione correctamente. ¿Cómo uso un comodín en prototipo?

Respuesta

9

El prototipo no admite el uso de comodines como ese, pero permite emparejar el final de un valor con el $=attribute selector.

$$('a[href$=.jpg], a[href$=.png], a[href$=.gif]').each(function(link){ 
+0

Perfecto. Funciona exactamente como yo quiero Estaba jugando con ~ =, también, pero ahora veo que estaba equivocado. – msb

Cuestiones relacionadas