[英]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.