0

我最终手动完成了这项工作,但我认为这可以通过一些 jquery 更快地完成。

我有一个表格,下面有几十个示例行。我想做的是找到之前的兄弟姐妹<a href="#">,获取他们的 URL,将文件类型更改为 .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'));

最终得到第一个 url,并将其应用于所有<a href="#">. 因此,Interview-Info.pdf 适用于所有这些链接。

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

4

2 回答 2

2

.attr()仅适用于集合中的第一个元素,因此您可能希望遍历列表并将其应用于每个元素:

$('a+a[href="#"]').each(function() { 
  $(this).attr('href', $(this).prev().attr('href').replace(/\.[a-z0-9]+$/i, '.doc')); 
});
于 2010-10-19T19:06:15.843 回答
0

你快到了,试试这个:

$('a+a[href="#"]').attr('href',$('a+a[href="#"]').prev().attr('href').replace(/.pdf/gi, ".doc"));
于 2010-10-19T19:03:28.897 回答