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 に答える