4

私はちょうどこのコードを改善する方法を疑問に思っています:

pagination.children('li.active').prev().prev().prev().prev().prevAll('li.pgn').css("display","none");

私は.prev()チェーンが好きではなく、それを改善する方法を見つけられませんでしたが、あなたはその方法を知っていると確信しています;-)

編集:

ページネーションは、クラスを持っている人がulたくさん含まれている私のものです。liactive

最初の5つ前のものではなく、li前のものをすべて選択したい。li.active

pgn例(クラスは忘れてください):

<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li class="active"></li>

それはこれを与えるでしょう:

<li style="displat: none;"></li>
<li style="display: none;"></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li class="active"></li>
4

4 に答える 4

3

:gt()セレクターを使用できます。

pagination.children('li.active').prevAll('li:gt(4)').hide();

http://jsfiddle.net/MrvDX/

于 2012-10-20T16:29:31.683 に答える
1

このようにしているという事実は、ページ/アプリのデザインを改善できるという事実を示していると思います.

アクティブなクラスで LI を見つけなければならないのはなぜですか? なぜあなたはこれをまだ知らないのですか?最初にマークアップを生成したのは確かにあなたのアプリでした。

マークアップから状態を判断しようとしているようですが、私は避けたいと思っています。LI のどのインデックスが選択されているかを示すオブジェクトが必要です。次に、はるかに単純な jQ セレクターを使用して、関心のあるインデックスを選択できます。

于 2012-10-20T16:55:16.260 に答える
0

これを試して

編集

var pagination = $('ul');

var len = pagination.find('li.active').prevAll('li').length;
pagination.find('li.png').slice(0 , len-5).css('display','none')​​​​​​​​​​​​​​​​​;

働くフィドル

于 2012-10-20T16:38:32.150 に答える
0

あなたはこのようなことを試すことができます...

var $prevAll = pagination.children('li.active').prevAll('li.pgn');
var prevCount = $prevAll.length;

$prevAll.filter(function(index){
   return (prevCount - index < 5)
}).hide() //instead of - .css("display", "none");

filter メソッドを使用し、それに関数を渡します。

http://api.jquery.com/filter/

これが実際の例です。

http://jsfiddle.net/aTzzK/2/

于 2012-10-20T16:45:47.690 に答える