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



我尝试创建一个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);

谢谢

这里发生了许多事情:

  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>

只需window.location即可更改您的$(window).location

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

最新更新