0

我正在遍历一些包含链接的 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();
    ?
});
4

4 回答 4

2

不确定您的 HTML 结构到底是什么,但假设您可以访问锚标记:

$('a').each(function (index) {
    var tokens = this.href.split('/')
        , link = tokens[tokens.length - 2];

    // link is now "books" or "movies"
});

请注意,这还假设所有链接都有一个尾随/.

示例:http: //jsfiddle.net/JVQsm/

于 2013-03-03T14:21:37.627 回答
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]+'/';
});

小提琴

于 2013-03-03T14:22:59.153 回答
1

也许是这样的:

var listOptions = [];

$('a').each(function () {
    var trimmed = $(this).prop('href').slice(0, -1);
    listOptions.push(trimmed.substring(trimmed.lastIndexOf('/') + 1));
});

/您在所有链接中都有尾随。如果总是这样,您需要先将其删除。
将其存储在trimmed变量中,然后提取最后一部分。

如果情况并非总是如此,您可以稍微扩展一下逻辑。检查最后一个字符是否为/,然后将其删除。如果不是,则不要删除任何内容

于 2013-03-03T14:27:47.757 回答
1

我会像这样使用jQuerymap

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现在将是 URL 最后部分的数组。

于 2013-03-03T14:19:53.883 回答