0

複数のリストを動的に作成しており、最初にそれを 5 つに制限してから、クラス .parentcat の最も近い前のタグから取得する必要がある「その他」リンクを作成する必要があります。

これは私がこれまでに持っているものです....

HTML/JQuery

<h2><a class="parentcat" title="" href="#">Heading</a></h2>
<ul class="subcat">
      <li><a href="#">Link 1</a></li>
      <li><a href="#">Link 2</a></li>
      <li><a href="#">Link 3</a></li>
      <li><a href="#">Link 4</a></li>
      <li><a href="#">Link 5</a></li>
</ul>


$(function () {
    var link = ($(this).find('a.parentcat').attr('href'));

    $("ul.subcat").each(function () {
        $("li:gt(5)", this).hide(); /* :gt() is zero-indexed */
        $("li:nth-child(6)", this).after("<li class='more'><a href='#'>More...</a></li>"); /* :nth-child() is one-indexed */
    });
});

これにより、表示される LI の量が制限されますが、変数は、UL に最も近い a.parentcat を見つける必要がある多くの a.parentcat タグの最初のものを見つけるだけです。また、おそらく非常にばかげた質問で、変数を .after() に入れるのは誰ですか?私が行ったすべての試みは失敗しました。

4

2 に答える 2

1

eachもちろん、ループ内で URL を取得する必要があります。それ以外の場合は、.attr()常に jQuery オブジェクトの最初の要素が使用されます。

$("ul.subcat").each(function () {
    var link = $(this).prev('h2').find('a.parentcat').attr('href');
    $("li:gt(5)", this).hide(); /* :gt() is zero-indexed */
    $("li:nth-child(6)", this).after("<li class='more'><a href='#'>More...</a></li>"); /* :nth-child() is one-indexed */
});
于 2012-05-13T23:22:33.093 に答える
0

eachloop を使用して、すべてのhrefs を配列に格納できます。

var links = [];
$('a.parentcat').each(function(i, v){
   links[i] = $(this).attr('href');
})
于 2012-05-13T23:25:12.810 に答える