0

ユーザーが自分のWebサイトにメッセージを投稿できるようにしています。%popなどを次の形式のリンクに置き換えられるようにしたいと思います。

<a href="ss/pop.wav">%pop</a>

%explosionは次のように変更されます:

<a href="ss/explosion.wav">%explosion</a>

私はjQueryを使用していますが、これを行う方法を誰かが知っていますか?

4

4 に答える 4

2

jQuery と正規表現を組み合わせて使用​​する:

jQuery("div.message").each(function() {
    jQuery(this).html(jQuery(this).text().replace(
        /%(\w+)/g,"<a href='ss/$1.wav'>%$1</a>"
    ));
});

必要に応じて「div.message」セレクターを変更します。各 div.message を反復処理し、必要に応じて %foo の出現ごとに置き換えます。

于 2012-04-18T00:03:44.290 に答える
2

This code doen't need jQuery:

"The %pop is here".replace(/%(\w+)/g, '<a href="ss/$1.wav">%$1</a>')

results in:

"The <a href="ss/pop.wav">%pop</a> is here"

于 2012-04-17T23:35:28.820 に答える
1
$("a").each(function() {
    var href = $(this).val().split("%")[1];
    if(href.length > 0) {
        $(this).attr("href", "ss/"+href+".wav");
    }
});​

もちろん、HTML アーキテクチャに合わせてセレクターを調整する必要があります。aこれは、ページ上のすべての要素を反復処理するのが面倒で遅くなる可能性があるためです。(簡潔にするために、クラスを使用することをお勧めします)

于 2012-04-17T23:33:35.697 に答える
1

Assign a class or rel to the tag, loop through all instances to get the value inside the brackets, filter the % and assign the href.

$('a.get-path').each(function(){

    // Cache the $(this) object
    var $this = $(this);

    // Strip out the % from the "file name" and create the path
    var myPath = $this.html().replace(/%(.*)/, "ss/$1.wav");

    $this.attr('href', myPath);

});
于 2012-04-17T23:36:36.057 に答える