我已经结束并手工完成了这项工作,但我认为这可以通过一些jquery更快地完成。
我有一张桌子,下面有几十个示例行。我想做的是找到<a href="#">
的先前兄弟姐妹,抓住他们的网址,将文件类型更改为.doc并申请。
<tr id="node-20" class="child-of-node-19">
<td>Tips</td>
<td>
<a href="docs/Interview-Info.pdf">
<img width="20" height="20" src="/images/icons/icon-pdf.gif" alt="PDF" />
</a>
<a href="#">
<img width="20" height="20" src="/images/icons/icon-word.gif" alt="Microsoft Word" />
</a>
</td>
</tr>
因此,一旦javascript完成,生成的源将如下所示。
<tr id="node-20" class="child-of-node-19">
<td>Tips</td>
<td>
<a href="docs/Interview-Info.pdf">
<img width="20" height="20" src="/images/icons/icon-pdf.gif" alt="PDF" />
</a>
<a href="docs/Interview-Info.doc">
<img width="20" height="20" src="/images/icons/icon-word.gif" alt="Microsoft Word" />
</a>
</td>
</tr>
我的最后一个变种是:
$('a+a[href="#"]').attr('href',$('a+a[href="#"]').prev().attr('href'));
最终获得第一个网址,并将其应用于所有<a href="#">
。所以Interview-Info.pdf适用于所有这些链接。
由于时间限制,这是我得到的。这样做有一个简单的方法吗?
答案 0 :(得分:2)
.attr()仅适用于集合中的第一个元素,因此您可能希望迭代列表并将其应用于每个元素:
$('a+a[href="#"]').each(function() {
$(this).attr('href', $(this).prev().attr('href').replace(/\.[a-z0-9]+$/i, '.doc'));
});
答案 1 :(得分:0)
你快到了,试试这个:
$('a+a[href="#"]').attr('href',$('a+a[href="#"]').prev().attr('href').replace(/.pdf/gi, ".doc"));