簡體   English   中英

更改標簽href取決於window.location.href

[英]changing a tag href depends on 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方法和vanilla方法混合使用可能會造成混淆,因為您必須跟蹤哪些變量包含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 .location

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM