2012-05-13 9 views
0

私は動的に複数のリストを作成していますが、まずそれを5に制限してから、クラス「.parentcat」でもっとも近い以前のタグから取らなければならない "More"リンクが必要です。これは、の量を制限LIの量とリンクを追加する

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()に代入するのは非常にばかげた質問かもしれません。

+1

はあなたの最初の '$(これは)'意味をなさない – gdoron

+0

、DOM構造をしてください表示します。とにかく文書全体を検索しているので、この時点で '$( 'a.parentcat')'を単に使うことができます。 – ThiefMaster

+0

私はHTMLも追加しました。 –

答えて

1

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

あなたが eachループを使用して、配列内の href秒のすべてを保存することができ
$("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 */ 
}); 
+0

私はHTMLを表示するように更新しました。 a.parentcatは見出しとしてLIの外側にあります。 –

+0

これを試しましたが、うまく動作していないようです。 –

+0

私は自分の答えを更新しました。やってみよう。 – ThiefMaster

0

var links = []; 
$('a.parentcat').each(function(i, v){ 
    links[i] = $(this).attr('href'); 
}) 
関連する問題