0

オンライン コース用に設定したメニューから各アンカー タグ リンクを抽出したい

ul ID は #sidebar です

サイドバーの li は正しい章の順序になっているので、ユーザーがどの章のページにいるかを見つけて、前の章と次の章を取得し、各章の下部にある他のアンカー タグに渡したいと思います。

これが私が得た距離です。

 for(var i = 0; i < $("#sidebar ul li").size(); i++) {

            console.log('chapter '+i+' = ',$("#sidebar ul li").get(i))

    }

これは各 li 要素を返しますが、返された各 li 内の a href 値を取得するにはどうすればよいでしょうか?

最後に .a を付けてみましたが、うまくいきませんでした。グーグルでもあまり見つかりませんでした。

ありがとう

4

4 に答える 4

4

これを試してください:ここでフィドル

var $sidelist = $("#sidebar ul li").size();

for (var i = 0; i < $sidelist; i++) {
    console.log('chapter ' + Math.floor(i + 1) + ' = ', $("#sidebar ul li").find('a').eq(i).attr('href'));
}

上記の出力は次のとおりです。

//this is the output of for loop:
    chapter 1 = #chaper-1
    chapter 2 = #chaper-2
    chapter 3 = #chaper-3

またはで$.each()

var $sidelist = $("#sidebar ul li");
$.each($sidelist, function(i, v){
   console.log('chapter '+Math.floor(i + 1)+' = ' + $(this).find('a').attr('href'));
});

ノート:

Math.floor(i + 1)にこれを行う必要がありますstart the chapter with index 1 otherwise this will start at 0

于 2013-02-26T05:14:55.830 に答える
2

パフォーマンスの観点からは、selector をループ外で 1 回だけ実行することが重要です。

    var links =  $("#sidebar ul li a"); // equivalent to  $("#sidebar ul li").find('a')
    for(i = 0, length = links.length; i < length; ++i){
         console.log('chapter '+ i + ' = ' + $(links[i]).attr('href'));
    }
于 2013-02-26T05:26:27.337 に答える
1

FIND()を利用して、

for(var i = 0; i < $("#sidebar ul li").size(); i++) {
 console.log('chapter'+ i +' = ',$("#sidebar ul li").find('a').eq(i).attr('href'));
}
于 2013-02-26T05:19:40.070 に答える
0

こんにちは、あなたの迅速な回答に感謝します。

私はこれを少しいじってやりたいことをやらせることになりました。

これは私が思いついたものです...

$(document).ready(function(){
var previouschap;
var nextchap;
var chapter ="<?php echo (isset($_GET['chapter'])) ? $_GET['chapter'] : 'No Chapter';  ?>";

for(var i = 0; i < $("#sidebar li").size(); i++) {
    liresult = $($("#sidebar li a").get(i)).attr('href');

    if(liresult == './index.php?chapter='+chapter)
                    {
                        previouschap = $($("#sidebar li a").get(i-1)).attr('href');
                        nextchap = $($("#sidebar li a").get(i+1)).attr('href');

                        $('#previous-chapter').attr('href', previouschap);
                        $('#next-chapter').attr('href', nextchap);
                        break;
                    }

    }
});
于 2013-02-26T05:42:16.327 に答える