javascript - 更改标签 href 取决于 window.location.href
问题描述
我尝试创建一个 jQuery 片段来检测窗口的 url并取决于窗口的 href,更改a 标签的 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);
谢谢
解决方案
这里发生了很多事情:
location.href
不是 jQuery 方法;它是常规窗口对象的属性。使用window.location.href
而不是$(window).location.href()
.- 看起来您正在尝试匹配字符串“pageUrl”而不是变量 - 除非这是作为问题中的示例字符串,否则变量名称不应包含在引号中。
- 您可能不想匹配 full
window.location.href
,其中包括在仍指向同一页面时可能会发生变化的内容(例如协议、子域、哈希和 URL 参数);window.location.pathname
通常是更安全的选择(假设您尝试匹配特定页面。) - 不必将脚本包装在 IIFE 和 a
document.ready
和 awindow.onload
中。我已经删除了这里的冗余层。 - (可选)混合使用 jQuery 方法和 vanilla 方法可能难以维护,因为您必须跟踪哪些变量包含 jQuery 对象以及哪些包含对常规 DOM 节点的引用。由于您已经在其他地方获得了 jQuery,因此我在这里将您
document.getElementById
的 jQuery 换成了等效的 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>
推荐阅读
- javascript - 回调函数语法 - 为什么不允许这样做?
- html - Flex:100% 高度包装 div 不起作用
- php - 尝试仅从当前产品帖子(Woocommerce)中获取属性
- css - 在 Angular 9 中折叠侧边栏时如何显示链接文本?
- java - 从其构建的 Jar 文件运行 java(另一种方式)
- maven - Maven EAR 插件:生成的 EAR 文件不包含 WAR 或 EJB 或 RAR 模块
- javascript - 如何随机创建滴数?
- php - JSON 循环使用 Steam API 获取特定游戏的 playtime_forever
- html - 用css悬停时显示一个图标
- powerapps - 如何将数据从 PowerApp 发送到 Flow Automate (POST)?