ユーザーが自分のWebサイトにメッセージを投稿できるようにしています。%popなどを次の形式のリンクに置き換えられるようにしたいと思います。
<a href="ss/pop.wav">%pop</a>
%explosionは次のように変更されます:
<a href="ss/explosion.wav">%explosion</a>
私はjQueryを使用していますが、これを行う方法を誰かが知っていますか?
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 の出現ごとに置き換えます。
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"
$("a").each(function() {
var href = $(this).val().split("%")[1];
if(href.length > 0) {
$(this).attr("href", "ss/"+href+".wav");
}
});
もちろん、HTML アーキテクチャに合わせてセレクターを調整する必要があります。a
これは、ページ上のすべての要素を反復処理するのが面倒で遅くなる可能性があるためです。(簡潔にするために、クラスを使用することをお勧めします)
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);
});