HTML/jQuery如何在刷新时仅更改URL的一部分

3

我有一个jQuery按钮,可以像这样重定向页面...

$('#changeLang').click(function() {
    document.location.href='/' + $('#languages').val();
})

这个功能运行得很好,但是当有人在一个更深的URL上点击它时,它会重定向到/foo页面...

/foo/bar/foobar

我希望它只改变“foo”部分,这样一点击它就会做到以下操作...

/$('#languages').val()/bar/foobar

我不认为这是一个重复的问题,因为实际上我确实想重新加载页面,只是修改URL的一部分。 - Joff
将用户重定向到“绝对路径”,例如“http://yourdomainname/value/bar/foobar”。 - Rayon
你知道你要转换的旧语言吗?如果知道,你可以进行字符串替换。 - Bindrid
但是这是在我的网站的每个页面上都有的主模板,所以它应该将/foo/bar重定向到/bar/bar,并将/bar/foo重定向到/foo/foo。保留第一个/x/后面的所有内容。 - Joff
@Bindrid 我正在从数据库中的条目更改整个网站语言,因此用户可以选择下拉菜单并从 /eng/foo/bar 到 /fre/foo/bar 或从 /esp/bar/foo 到 /zhu/bar/foo。 - Joff
1个回答

3
你可以使用window.location.pathname,它会给你域名后面的所有内容,将其拆分成一个数组,更改需要更改的内容,然后用join将其粘合在一起。
$('#changeLang').click(function() {
    var url = window.location.pathname.split('/');
    url[1] = $('#languages').val();
    document.location.href = url.join('/');
}); 

https://jsbin.com/huqijezoxu/edit?html,js,output


谢谢,这个方法可行。我也想到过这个,只是想知道是否有更简单的方法。 - Joff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接