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

私はそのように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 に答える
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 に答える