2012-03-19 30 views
0

jQueryサイクルを使用して「ページ区切り」したい長いリストがあります。リストには約40の項目があり、一度に5を表示し、下にNext/Prevを表示します。jQuery - 別の関数の実行が終了した後にのみ関数を実行する

これは私がやろうとしているものです:http://jsfiddle.net/saltcod/vmdaM/97/

最初の関数は、5つの項目のチャンクにリストを分けるだろう、その後、jQueryのサイクルは結果に実行されます。

私は5つの項目にちょうどうまくまとめられたリストを持っています。しかし、jQueryのサイクルは、それが動作するdivsを持っていないことを私に伝え続けます。

jQueryサイクルを開始する前に、最初の関数がリストのスライスを完全に終了していることを確認するにはどうすればよいですか?ループがあなたのサイクルのプラグインの初期化を行う時までに完了することが保証されているため言及@minitechとして実際

おかげ

テリー

+2

:とにかく、ここで正しいマークアップを使用して、私の書き換えが、です。問題は他のところにあります。 – Ryan

+0

コンソールに 'jquery.cycle.lite.js:28 terminating;というメッセージが表示されます。スライド数が少なすぎる:1' – mreq

答えて

2

問題はあなたの選択です:

$('#projectList').cycle(...) 

projectList要素は、それだけ単一ulを任意のdiv要素を持っていません。

はそうのようなあなたのセレクタを変更

:もちろん

$('#projectList ul').cycle(...) 

...あなたのwrapAll呼び出しがマークアップが間違ってきました。問題は、あなたの<div> sはまだ<ul>内にネストされていることであるあなたは今、ほぼ確実に有効ではありませんul > div > liを持っている...でもねえ、それはとにかく動作するはずです、少なくとも、あなたはさらに少し:)

0

を取得します。そこからそれらを削除する必要があります。何がうまくいかなかったのか分かりませんし、正しく働くことができません。あなたはスタイルシートがありませんか?すでにすでに実行されることが保証だ

var count = 1; 
var newList; 
var projectList = $('#projectList'); 

projectList.find('ul').remove().find('li').each(function(i) { 
    if(i % 5 === 0) { 
     newList = $('<ul>'); 
     newList.appendTo($('<div>').addClass('panel panel' + count++).appendTo(projectList)); 
    } 

    newList.append(this); 
}); 

projectList.cycle({ 
    fx: 'scrollVert', 
    speed: 'fast', 
    timeout: 0, 
    prev: '.back', 
    next: '.more' 
}); 

Here's a demo.

+0

なぜあなたはdownvotedを得たのか分かりません...あなたのソリューションは間違いなくマークアップをより正確にして、内側の 'div'sを' ul'に展開して複数の 'ul'に' li 's。私は 'newList'ビルディングのアプローチが完全に好きではないかと確信していますが、ちょっと、うまくいきます。 – rfunduk

+0

@rfunduk:それを心配しないでください、それはシリアルdownvoterです。ありがとう :) – Ryan

関連する問題