0

我允许我的用户在我的网站上发布消息。我希望能够将 %pop 之类的内容替换为以下格式的链接:

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

%explosion 将更改为:

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

我正在使用 jQuery,有人知道我会怎么做吗?

4

4 回答 4

2

此代码不需要 jQuery:

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

结果是:

“<a href="ss/pop.wav">%pop</a> 在这里”

于 2012-04-17T23:35:28.820 回答
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 回答
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

为标签分配一个类或 rel,遍历所有实例以获取括号内的值,过滤 % 并分配 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 回答