我正在使用<a>
标记包装所有网址,但由于我开发了应用程序样式的网站,因此我需要使用特定属性替换所有内部网址。
所以这个:
href="http://domain.com/page/details"
应该成为
data-bind="page: '/page/details'"
问题是,仅仅替换开头是不够的,因为链接本身应该用引号括起来供以后的javascript处理。另外,我想介绍www.domain.com
与domain.com
更新
它尽可能简单。我不是要求网址检测正则表达式,我已经涵盖了所有这些。
所有我需要的是使用与我在示例中显示的当前域匹配的url更改href的前部,然后用单引号包装其余的url。
我知道如何简单地将替换前部href="http://domain.com
更改为data-bind="page:
,但如何将剩余的剩余网址/page/details
换行,或者换句话说,直到第一次双引号为止所有文本,带一个单引号。
答案 0 :(得分:2)
这样的事情怎么样:
var newString = string.replace(/href="http:\/\/domain\.com(\/[^"]*)"/g, "data-bind=\"page: '$1'\"");
答案 1 :(得分: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,这还有一个额外的好处就是优雅地退回。