更改标签href取决于window.location.href

时间:2018-08-13 14:01:39

标签: javascript jquery

我尝试创建一个jQuery代码段,以检测 窗口的URL ,并依赖 窗口的href ,更改 标签 的href。

到目前为止,我的代码是

(function($) {
  "use strict";
  $(document).ready(function() {
    $(window).on('load', function() {
      var changeLink = document.getElementById("LinkTag");
      console.log('it is running');
      if ($(window).location.href() == "pageUrl") {
        changeLink.href = "website1";
      } else {
        changeLink.href = "website2";
      }
    });
  });
})(jQuery);

谢谢

2 个答案:

答案 0 :(得分:1)

这里发生的许多事情

  1. location.href不是jQuery方法;它是常规窗口对象的属性。使用window.location.href代替$(window).location.href()
  2. 您似乎正在尝试匹配字符串“ pageUrl”而不是变量-除非该字符串用作问题中的示例字符串,否则变量名不应用引号引起来。
  3. 您可能不希望与完整的window.location.href相匹配,其中包括在指向同一页面时可能有所不同的内容(例如协议,子域,哈希和URL参数); window.location.pathname通常是比较安全的选择(假设您正尝试匹配特定页面。)
  4. 没有必要将脚本包装在IIFE和document.readywindow.onload中。我在这里删除了多余的层。
  5. (可选)混合使用jQuery方法和普通方法可能难以维护,因为您必须跟踪哪些变量包含jQuery对象以及哪些变量包含对常规DOM节点的引用。由于您已经在其他地方使用了jQuery,因此在这里我将document.getElementById换成它的jQuery。

$(document).ready(function() {
  var pageUrl = "/js"; // This is the path when running in a stackoverflow snippet
  var changeLink = $("#LinkTag");
  if (window.location.pathname == pageUrl) {
    changeLink.attr("href","//example.com");
  } else {
    changeLink.attr("href","//somethingelse.com");
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a id="LinkTag">Link</a>

答案 1 :(得分:-1)

$(window).locationwindow.location退货

if (window.location.href == "pageUrl")
          changeLink.href = "website1";
     else 
        changeLink.href = "website2";