2012-01-04 15 views
4

jQueryプラグインを使用しています:http://tutorialzine.com/2011/03/photography-portfolio-shutter-effect/私はそれを少し変更しました。jQueryの使用方法.find()

は、それはまだそれが想定された方法で完璧に動作しますが、私は、ユーザーのCNAの使用は、次の画像にスキップするする次のボタンを追加した、とchangeontoしないように、それは、1つのループのためのインターバルを一時停止します次の画像が早すぎます。

しかし、私の問題は、先のボタンにあります。私はそれを行う方法を確認していないので、私は、私は、リストにいるところ、私が知っているので、最後のリスト項目の位置である変数

var positionInt 

を追加しました。正しい李アイテムを開くために

var container = $('#container'), 
    li = container.find('li'); 

は、どのように私はこのラインで作成された李オブジェクトと一緒にこれを使うのですか?

また、liオブジェクトの長さはどのようにして調べることができますか?私はli.size()、li.count()とli.lengthを試していて、どれもうまくいきませんでした。

または、現在表示されている項目の前にli項目を開くために.find()メソッドを使用する方法がありますか?これは、前方を行くために本来はそれをしない方法です:

li.filter(':visible:first').hide(); // Hid the only visible li 
if(li.filter(':visible').length == 0){ 
li.show(); // if nothing is visible load a li (Im not really sure what this is pointing at, but it loads the next li) 
} 

乾杯

答えて

3

両方lengthsize()はあなたのjQueryオブジェクトの要素数のカウントを与えていきます。

http://jsfiddle.net/KeKPb/

私はそれがないすべてが内部とにかくlengthを使用しているsize()呼び出しのオーバーヘッドの必要がないようlengthがより頻繁に使用されていることがわかります。

両方のメソッドが完全に有効であるため、「機能しない」とは何かを定義する必要があります。

12

あなたが好きli年代の数を取得することができます:

$prev_li = $("#container ul li:eq(" + (index-1) + ")"); 

ドを:あなたは現在あなたが実行して、以前のものを得ることができ<li>使用の現在のインデックスを知っている場合

var nr_li = $("#container ul li").length; 

あなたが範囲外に出ていないことを確かめるために、それにindex-1のいくつかの計算とチェックをして、存在しない要素に到達しようとしていることを確かめてください。

あなたができるもう一つのことは、<li>を循環させて、それぞれを配列に追加することです。これで、前の配列を配列から取り出すことができます。

var array_li = new Array(); 

$('#container li').each(function() { 
    array_li.push($(this)); 
}); 
+0

ループに入れて配列に入れる理由はありません。単に 'eq'を使ってjqueryオブジェクトから特定の要素を取り出したり、jqueryオブジェクト自体を配列として使うことができます。 '$("#container ul li ")[2]'必要なら配列を得るためにhttp://api.jquery.com/get/を使うこともできます。 –

+0

私は彼の実装に応じて役に立つかもしれない解決策を提供しています。とにかく、私の答えにも 'eq'メソッドが説明されています。 – Jules