jQuery:另一种解决方案可能吗

jQuery: Is another solution possible?

本文关键字:解决方案 另一种 jQuery      更新时间:2023-09-26

我试图使用jQuery注册一个onClick处理程序,该功能应该是更改URL中的查询字符串,并在将新URL分配给window.location.href时启动重新加载。

// sets a new URL with lang as query parameter indicating the language 
  setNewLang: function( lang ) {
  var that = this;
  // the url that shall be changed
  var url = window.location.href;
  // save possible other query parameters
  var tokenizedUrl = url.split("&");
  // first string in the array contains language query parameter
  var tokenZero = tokenizedUrl[0].split("l=");
  // set the new language query parameter in the first part of the url
  tokenizedUrl[0] = tokenZero[0] + "l=" + lang;
  // concatenate the splitted url
  var retVal = tokenizedUrl[0];
  for(i=1; i<tokenizedUrl.length; i++) {
    retVal = retVal + "&" + tokenizedUrl[i];
  }
  console.log(retVal);
  // reload page with new query parameter for language
  window.location = retVal; 
  return false;
}
/* language selection for navbar-right*/
    $("#navbarRightLanguageListEnglish").on("click", function() {
        console.log("DBG-INFO");    /* even the log never appears */
        that.setNewLang("en_US");
    });

我在萤火虫身上试过了,效果很好。铬中有虫子吗?或者是作用域、jQuery或…的问题。。。?如果有另一个解决方案可以更改和重新加载网站,我会很高兴知道它。

谢谢你的帮助。


嘿,伙计们!

我忘了发布HTML,也忘了说我也在使用引导程序。顺便说一句,我自己发现了这个bug,但谢谢你的帮助。

<!-- Language Selection -->
    <div id="navbarTopLanguage" class="dropdown dd-top">
        <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" >Language<span class="caret"></span>
        </button>
        <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
            <li id="navbarTopLanguageListEnglish" role="presentation"><a role="menuitem" tabindex="-1" href="">English</a></li>
            <li id="navbarTopLanguageListDeutsch" role="presentation"><a role="menuitem" tabindex="-1" href="">Deutsch</a></li>
        </ul>
    </div>
    <!-- End of Language Selection -->

"href"-属性为空,这是我的错。Chromium给了他们一个(错误的)值,所以点击它不会产生wwanted效果。

我通过更改javascript修复了它。

// sets a new URL with lang as query parameter indicating the language 
setNewLang: function( id, lang ) {
    // selfie-pattern
  var that = this;
  // the url that shall be changed
  var url = window.location.href;
  // save possible other query parameters
  var tokenizedUrl = url.split("&");
  // first string in the array contains language query parameter
  var tokenZero = tokenizedUrl[0].split("l=");
  // set the new language query parameter in the first part of the url
  tokenizedUrl[0] = tokenZero[0] + "l=" + lang;
  // concatenate the splitted url
  var retVal = tokenizedUrl[0];
  for(i=1; i<tokenizedUrl.length; i++) {
    retVal = retVal + "&" + tokenizedUrl[i];
  }

  console.log(retVal);
  // reload page with new query parameter for language
  $(id).attr("href",retVal);
}

新函数将指定的"href"-attribute(参数"id")的值替换为新URL。

谢谢你的帮助。

请尝试

window.location.href = retVal;

而不是

window.location = '...'

如果您不想以前的URL转到浏览器历史记录,请尝试

window.location.replace(retVal)

希望这能有所帮助。