2011-07-25 8 views
1

リストのすべてのアイテムで同じクラス名を使用するこのリストがあります。私は、最も高い要素を見つけ、すべてのリスト項目の高さを最も高いものにするjQueryプラグインを持っています。要素のグループごとにjQueryメソッドを実行する方法

私がしたいことは、それぞれULグループのメソッドを実行したいということです。つまり、他のリストにあっても、jQueryがすべてのLI要素を選択し、それらの要素をすべて同じものにしているということです。私は、リストの項目が他のリストにない彼らのリストの中で最も背の高い要素と同じくらい高くなるようにしたい。

これは私がそれを呼び出す方法であり、動作しますが、私が求めている方法ではありません。

$j('.list-item').equalHeights(200); //minimum is 200px 

私はこれを試してみましたが、それは同じ結果が得られます。

$j('.lists').find('li').equalHeights(200); 

私は各ULをループしていたならば、そのようにメソッドを実行して確認されませんでしたか?

HTML:

<ul class="lists"> 
    <li class="list-item">item</li> 
    <li class="list-item">item</li> 
    <li class="list-item">item</li> 
    <li class="list-item">item</li> 
</ul> 
<ul class="lists"> 
    <li class="list-item">item</li> 
    <li class="list-item">item</li> 
    <li class="list-item">item</li> 
    <li class="list-item">item</li> 
</ul> 
<ul class="lists"> 
    <li class="list-item">item</li> 
    <li class="list-item">item</li> 
    <li class="list-item">item</li> 
    <li class="list-item">item</li> 
</ul> 

答えて

6

はい、あなたがループしたいと思う:

$j('.lists').each(function() { 
    $j(this).find('li').equalHeights(200); 
}); 

あなた$j('.lists').find('li').equalHeights(200);が近かったが、それはリストのすべてliのすべての要素を検索し、それらのすべてを含む単一のjQueryインスタンスを返します(そのため、セット全体が変わりません)。上記のプロセスはそれぞれ単独で一覧表示されます。

+0

um ..実際にはTJsの回答は私が必要なものです。関数やその他のものは必要ありません。それぞれのグループに対してequalHeights()というメソッドを実行するだけの方法です。メソッドはすでに –

+0

@ T.J.Crowderあなたの権利を働かせます。私はそれを正しく読まなかった。 – Raynos

0

私にとっては、ループがこれを行う最も簡単な方法です。あなたが期待通りに動作するようにあなたの指示$j('.list-item').equalHeights(200);が必要な場合は

しかし、あなたが最初の1 ul内のすべてのli Sのグループのコレクションを構築し、その後のために高さ-等しいロジックを実行するためにequalHeights方法の独自のアナログを書きたいこと各グループは別々にしたがって、すべてのロジックを1つのメソッドの中に収めることができます。

関連する問題