获取上一个兄弟的href并更新当前项的href

时间:2010-10-19 18:51:55

标签: jquery href siblings

我已经结束并手工完成了这项工作,但我认为这可以通过一些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适用于所有这些链接。

由于时间限制,这是我得到的。这样做有一个简单的方法吗?

2 个答案:

答案 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"));