0

これを行うために正規表現を実行しようとしています:

ドキュメント内の apk ファイルのすべてのインスタンスを置き換えます。

<a href="http://download.mydomain.com/files/androidfile.apk">

と:

<a target="_blank" href="http://mydomain.com?f=http://download.mydomain.com/files/androidfile.apk">

この JQUERY コードを使用すると、次のようになります。

$('body').contents().filter(function() {
    return this.nodeType === 3;
}).each(function() {
    $(this).replaceWith($(this).text().replace(/<a href~/^.*\.(apk)$/i, 'http://mydomain.com?f=">$1</a>'));
});

したがって、基本的に、 の前のコードを削除して、download.mydomain.com/files/androidfile.apk<a href="http:// 置き換え<a target="_blank" href="http://mydomain.com?f=http://ます。ページにはこれがいくつかある可能性があるため、すべてを一致させて置き換えるソリューションが必要です。

正規表現と置換が機能していないようです。これに対する解決策は何でしょうか。

要約すると、JQuery でこれを実行できるようにしたいと考えています。

<html>

<a href="http://download.domain.com/files/androidfile1.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>

<a href="http://download.domain.com/files/androidfile2.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>

<a href="http://download.domain.com/files/androidfile3.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>

<a href="http://download.domain.com/files/androidfile4.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>

<a href="http://download.domain.com/files/androidfile5.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>

</html>

これに:

<html>

<a href="http://mydomain2.com?f=http://download.domain.com/files/androidfile1.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>

<a href="http://mydomain2.com?f=http://download.domain.com/files/androidfile2.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>

<a href="http://mydomain2.com?f=http://download.domain.com/files/androidfile3.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>

<a href="http://mydomain2.com?f=http://download.domain.com/files/androidfile4.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>

<a href="http://mydomain2.com?f=http://download.domain.com/files/androidfile5.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>

</html>
4

2 に答える 2

1

以下のコードでうまくいくはずです。正規表現を使用するのではなく、セレクターで終了を使用しました。これは同じ目的を果たし、より迅速に実行されるはずです。タグを完全に書き直す代わりに、jQuery.attr()を使用して属性を変更しました。実例はここにあります。

<!DOCTYPE html>
<html>

<head>
<title>test</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
    $('a[href$=apk]').each(function()
    {
        var mydomain = "http://mydomain2.com?f=";
        var $this = $(this);

        $this.attr("href", mydomain+$this.attr("href"));
        $this.attr("target", "_blank");
    });
});
</script>
</head>

<body>
<a href="http://download.domain.com/files/androidfile1.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://download.domain.com/files/androidfile2.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://download.domain.com/files/androidfile3.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://download.domain.com/files/androidfile4.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://download.domain.com/files/androidfile5.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>

</body>
</html>

結果の出力は次のとおりです。

<a target="_blank" href="http://mydomain2.com?f=http://download.domain.com/files/androidfile1.apk"><img src="theme/download.gif" alt="download" height="120px" border="0" width="130px"></a><br>
<a target="_blank" href="http://mydomain2.com?f=http://download.domain.com/files/androidfile2.apk"><img src="theme/download.gif" alt="download" height="120px" border="0" width="130px"></a><br>
<a target="_blank" href="http://mydomain2.com?f=http://download.domain.com/files/androidfile3.apk"><img src="theme/download.gif" alt="download" height="120px" border="0" width="130px"></a><br>
<a target="_blank" href="http://mydomain2.com?f=http://download.domain.com/files/androidfile4.apk"><img src="theme/download.gif" alt="download" height="120px" border="0" width="130px"></a><br>
<a target="_blank" href="http://mydomain2.com?f=http://download.domain.com/files/androidfile5.apk"><img src="theme/download.gif" alt="download" height="120px" border="0" width="130px"></a><br>
于 2012-12-14T19:22:29.537 に答える
1

あなたがやっていることはやり過ぎですが、うまくいきませんが、なぜページ上のすべての要素を選択するのですか? a要素を選択したい場合は、を使用して選択してみません$('a')か? 属性に文字列を追加するには、メソッドhrefを使用できますattr

$('a').filter(function() {
    return this.href.indexOf('apk')
}).attr('href', function(i, href) {
    return 'http://mydomain.com?f=' + href
}).attr('target', '_blank');

http://jsfiddle.net/NCC7u/

于 2012-12-14T19:17:44.813 に答える