-1

我用<a>标签包装了所有 url,但是因为我开发应用风格的网站,我需要用特定属性替换所有内部 url。

所以这:

href="http://domain.com/page/details"

应该成为

data-bind="page: '/page/details'"

问题是,仅仅替换开头是不够的,因为链接本身应该用引号括起来以便以后的 javascript 处理。我也想涵盖像这样www.domain.com的情况domain.com

更新

它尽可能简单。我不是要一个 url 检测正则表达式,我已经涵盖了所有这些。

我所需要的只是用与当前域匹配的 url 更改 href 的前面部分,就像我在示例中显示的那样,然后用单引号将 url 的其余部分包裹起来。

我知道如何简单地将替换前面部分更改href="http://domain.comdata-bind="page:,但是如何将其余剩余的 url/page/details或换句话说,所有文本包装到第一个双引号,用单引号。

4

2 回答 2

2

像这样的东西怎么样:

var newString = string.replace(/href="http:\/\/domain\.com(\/[^"]*)"/g, "data-bind=\"page: '$1'\"");
于 2013-06-27T20:25:35.003 回答
1

与其更改您的链接,不如让您的链接处理程序更智能。

保留您的链接:

<a href="http://example.com/path/to/thing">what</a>

但是改变他们的点击处理程序:

$('a').click(function() {
    url = $(this).get(0).pathname;
    console.log(url); // outputs "/path/to/thing"
    if (on the app page) {
        // do stuff
        return false;
    }
    else {
        // on the browser page
    }
});

如果禁用了 javascript,这还有一个额外的好处,那就是优雅地回退。

于 2013-06-27T20:18:40.253 回答