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 的数量,但变量只是找到了许多 a.parentcat 标记中的第一个,它应该找到最接近 UL 的 a.parentcat。也可能是一个非常愚蠢的问题,我将变量放入 .after() 我所做的所有尝试都失败了。

4

2 回答 2

1

You need to retrieve the URL inside the each loop of course. Otherwise the .attr() will always use the first element in the jQuery object.

$("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

您可以使用each循环并将所有hrefs 存储在一个数组中:

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