我正在浏览一些包含链接的li。
链接可能如下所示:
<a href="http://localhost/mlp/books/">Books</a>
......以及......
<a href="movies/">Movies</a>
我想要的是检索链接的最后一级(上述案例中的书籍和电影)并将它们放入数组中。
最好的方法是什么?
var listOptions = [];
$('#navigation ul').each(function(index){
var link = $(this).children().html();
?
});
答案 0 :(得分:2)
不确定您的HTML结构是什么,但假设您可以访问锚标记:
$('a').each(function (index) {
var tokens = this.href.split('/')
, link = tokens[tokens.length - 2];
// link is now "books" or "movies"
});
请注意,这也假设所有链接都有一个尾随/
。
答案 1 :(得分:1)
我会这样使用jQuery map
;
var listOptions = $('#navigation ul').map(function () {
var href = $(this).find('a').prop('href');
// Handle a trailing '/', which will screw things up
if (href.slice(-1) === '/') {
href = href.slice(0, -1);
}
var last = href.lastIndexOf('/');
// Handle href="foo";
if (last === -1) {
last = 0;
}
// Return the last part of the URL.
return href.slice(last);
}).get();
listOptions
现在将是网址最后部分的数组。
答案 2 :(得分:1)
将它们放在一个数组中:
var listOptions = $.map($('#navigation ul li a'), function(el,i) {
return el.href.slice(0,-1).split('/').pop();
});
//listOptions now contains ['books', 'movies'] etc
只需在网站上替换它们:
$('#navigation ul li a').attr('href', function(i, href) {
var arr = href.split('/');
return arr[arr.length-2]+'/';
});
答案 3 :(得分:1)
也许是这样的:
var listOptions = [];
$('a').each(function () {
var trimmed = $(this).prop('href').slice(0, -1);
listOptions.push(trimmed.substring(trimmed.lastIndexOf('/') + 1));
});
您在所有链接中都有/
。如果总是如此,则需要先将其删除
它存储在trimmed
变量中,然后提取最后一部分。
如果情况并非总是如此,您可以稍微扩展一下逻辑。检查最后一个字符是/
,还是删除它。如果不是,则不删除任何内容