尝试在一个非常奇怪的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);
});
});
答案 0 :(得分:1)
好的,所以看来这里没有人试图在发布之前尝试解决方案。
首先是cheeks...
。这是一个难以找到的ID(你必须逃避这段时间)。 label
也不是ID为cheeks...
的内部html的一部分,因此我们需要找到相邻的元素并查看您正在寻找的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);
});
});
here是解决问题的有效方法。
答案 1 :(得分:0)
保持简单,就像你要做的代码一样
finalvar = urlsplit[urlsplit.length-1];
如果您不希望基本网址作为有效回报,则:
finalvar = ( urlsplit.length > 1 ? urlsplit[urlsplit.length-1] : "" );
将“”替换为您首选的错误/默认回报
你也可以尝试找到最后一个'/'的索引并做一个子串。
答案 2 :(得分:0)
试试这个。
<强> FIDDLE DEMO 强>
var URI = 'www.example.com/sub1/sub2/sub3/',
parts = URI.split('/'),
lastPart = parts.pop() == '' ? parts[parts.length - 1] : parts.pop();
//RESULT : "sub3"
答案 3 :(得分:0)
您可以使用正则表达式提取路径的最后一部分(即最后/
之后的所有内容):
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);
});
&#13;
a.cheeks:after {
content: " (className = 'cheeks')";
}
&#13;
<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>
&#13;
答案 4 :(得分:0)
如果您想要网址的最后一部分,例如激活码或 id 。可以尝试一下。
var url = 'www.abc.com/code=12345',
parts = url.split('='),
lastPart = parts.pop()
//lastPart = 12345