2010-11-18 48 views
6

我习惯了jquery,但需要为此项目使用Prototype框架。我有一个图像列表(jpg,png和gif),其中一些与<a>标签有链接。我需要将rel属性仅添加到那些直接链接到jpg,gif和png的<a>标签。除了以.jpg,.png或.gif结尾外,href没有类似的风格。我可以将rel添加到具有特定href的单个链接,但我无法弄清楚如何选择所有这些链接。需要联系的一个例子来操作:我如何选择原型中的图像的所有链接

<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> 

和期望的结果:

<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> 

我想,最终的代码看起来是这样的:

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

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

    }); 
}); 
</script> 

但我无法使通配符(*)正常工作。我如何在原型中使用通配符?

回答

9

Prototype不支持使用这样的通配符,但它确实允许使用$=attribute selector匹配值的结尾。

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

完美。完全按照我的想法工作。我也在与〜=搞混,但现在我发现这是错误的。 – msb 2010-11-18 00:13:38

相关问题