切换到相对位置

时间:2018-06-08 11:33:30

标签: javascript jquery url

嗨,不知道是否有人可以指出我正确的方向。

我正在使用一些代码,我可以将其放在一个链接上,该链接将转到当前页面的URL,但是在一个单独的文件夹中,或者在网址中添加一个语言标识符。

例如,如果有人在FAQ.aspx上,他们会点击菜单中的意大利语链接,它会将它们发送给它-FAQ.aspx或/it/FAQ.aspx,其他页面也是如此。

这有意义吗?并且它是否可能,并且有人可以指向我的方向

提前致谢!

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

获取当前网址的第一个路径名,然后将语言代码放在前面并使用jquery更改链接的href:

<html>
 <a class="switch_language" data-country-code="it" href="">Italian</a>
 <a class="switch_language" data-country-code="de" href="">German</a>

和...

<script>
$('.switch_language').each(function() {
 $(this).attr('href', $(this).attr('data-country-code') + '/' + location.pathname);
});

您的语言链接网址将如下所示

/it/faq.aspx
/de/faq.aspx

答案 1 :(得分:0)

使用data属性,您可以在链接上存储“要添加到URL的部分”。您可以使用.data()方法阅读它。

然后......如果您按/分割实际网址,则可以重新组合并插入要添加的部分。

此脚本适用于任何页面。

$(".menu .lang").on("click",function(){
  
  // Get the actual page URL
  var thisPage = location.href;
  console.log(thisPage);
  
  // Split the URL by the "/"
  var splitted = thisPage.split("/");
  var splittedLength = splitted.length;
  
  // Get the data-lang value
  var insert = $(this).data("lang");
  
  // Re-assemble the URL except the last part
  var destination="";
  for (i=0;i<splittedLength-1;i++){
    destination += splitted[i]+"/";
  }
  
  // Add the part to "insert" and last part of the URL
  destination += insert+"/"+splitted[splittedLength-1];
  
  // OR
  // destination += insert+"-"+splitted[splittedLength-1];  // See explanation below the snippet.
   
  // Go to that page!
  console.log(destination);
  //location.assign(destination);  // Commented for this demo...
  
});
.menu a{
  display:block;
  text-decoration:underline;
  cursor:pointer;
  color:blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<h1>FAQ</h1>
<div class="menu">
  <a class="lang" data-lang="it">Italiano</a>
  <a class="lang" data-lang="en">english</a>
  <a class="lang" data-lang-"fr">Français</a>
</div>

这里,语言参数添加在/之间,就像它是一个目录......但你可以轻松地将它添加到页面名称中,就像它-FAQ.aspx一样。