簡體   English   中英

獲取 url 的最后一部分

[英]Get last part of the url

試圖以非常奇怪的 html 結構獲取 url 的最后一部分。 不要問為什么它是這樣建造的。 這背后有一個很好的理由。

html看起來像這樣

<li class="lifilter"><input type="checkbox" class="filtercheck" id="Cheeks...">
   <label for="Cheeks...">
      <a href="/collections/cheeks">Cheeks</a>
   </label>
</li>

和我正在嘗試使用的 js

$('#Cheeks... label a').each(function(){
      var lasturl = $(this).attr('href');
      var urlsplit = url.split("/");
      var finalvar = urlsplit[4];
      $(this).addClass(finalvar);
});

編輯:該死的..我只能每 90 分鍾發布一次。 這是更新后的 html 問題

 <li class="lifilter">
    <input type="checkbox" class="filtercheck" id="Cheeks...">
    <label for="Cheeks...">
         <a href="/collections/cheeks" class="cheeks">Cheeks</a>
    </label>
 </li> 

以及我嘗試使用的 js 代碼(來自之前的答案)

$('.lifilter').each(function(){
      $(this).find(".filtercheck").next('label').find('a').each(function(){
         var lasturl = $(this).attr('href');
         var urlsplit = lasturl.split("/");
         console.log(urlsplit);
         var finalvar = urlsplit.pop();
         console.log('Adding class: ' + finalvar);
         $(this).addClass(finalvar);
      });
 });

好的,所以似乎沒有人在發布之前嘗試在這里嘗試解決方案。

首先是cheeks... 這是一個很難找到的 ID(你必須避開句號)。 label也不是內部 html 的一部分,其中 ID 是cheeks... ,因此我們需要找到相鄰元素並查找您正在尋找a錨標記。

這是代碼:

$(document).ready(function() {
    $('#Cheeks\\.\\.\\.').next('label').find('a').each(function(){
          var lasturl = $(this).attr('href');
          var urlsplit = lasturl.split("/");
         console.log(urlsplit);
          var finalvar = urlsplit.pop();
        console.log('Adding class: ' + finalvar);
          $(this).addClass(finalvar);
    });
});

是解決方案的有效jsfiddle。

保持簡單,就像你的代碼一樣

finalvar = urlsplit[urlsplit.length-1];

如果您不希望基本 url 作為有效返回,則:

finalvar = ( urlsplit.length > 1 ? urlsplit[urlsplit.length-1] : "" );

將 "" 替換為您首選的錯誤/默認返回

你也可以嘗試找到最后一個 '/' 的索引並做一個子字符串。

嘗試這個。

小提琴演示

var URI = 'www.example.com/sub1/sub2/sub3/',
    parts = URI.split('/'),
    lastPart = parts.pop() == '' ? parts[parts.length - 1] : parts.pop();
//RESULT : "sub3"

您可以使用正則表達式提取路徑的最后一部分(即最后一個/之后的所有內容):

text.replace(/.*\\//g, "")

這將刪除斜杠之前的所有文本,以及斜杠本身。 您還會注意到您的選擇器沒有匹配任何元素; 您正在尋找嵌套在輸入中的標簽,該標簽與您發布的 html 不匹配(並且不是有效的 DOM 結構)。 一個合適的選擇器是.lifilter label a ,因為<label><li>

 $(function() { setTimeout(function() { $('.lifilter label a').each(function() { // strip everything up to and including the last forward slash var path = $(this).attr('href').replace(/.*\\//g, ""); $(this).addClass(path); }); }, 1500); });
 a.cheeks:after { content: " (className = 'cheeks')"; }
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <li class="lifilter"> <input type="checkbox" class="filtercheck" id="Cheeks..."> <label for="Cheeks..."> <a href="/collections/cheeks">Cheeks</a> </label> </li>

如果你想要 url 的最后一部分,例如激活碼id 。你可以試試這個。

var url = 'www.abc.com/code=12345',
    parts = url.split('='),
    lastPart = parts.pop()

//lastPart = 12345

暫無
暫無

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

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