jQuery - запускать только функцию ПОСЛЕ того, как другая закончила работу - PullRequest
0 голосов
/ 20 марта 2012

У меня есть длинный список, который я хочу «разбить на страницы» с помощью цикла jQuery.В списке около 40 пунктов, и я хочу показывать по 5 одновременно, а затем Далее / Пред.

Вот что я пытаюсь сделать: http://jsfiddle.net/saltcod/vmdaM/97/

Первая функция разделит список на куски по 5 элементов, а затем jQuery Cycle будет запущен для результата.

У меня список разделен на 5 пунктов.Но jQuery Cycle постоянно говорит мне, что с ним не нужно работать.

Как я могу убедиться, что первая функция полностью закончила нарезку списка перед началом цикла jQuery?

Спасибо

Терри

Ответы [ 2 ]

2 голосов
/ 20 марта 2012

Действительно, как @minitech упоминает, цикл for гарантированно завершится к тому времени, когда вы выполняете инициализацию плагина цикла.

Проблема в вашем селекторе:

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

projectList В элементе нет div'ов, только один ul.

Измените ваш селектор следующим образом:

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

Конечно ... ваш вызов wrapAll имеетсделал неправильную разметку.Теперь у вас есть ul > div > li, который почти наверняка недействителен ... Но, в любом случае, это должно сработать, по крайней мере, вы немного дальше:)

0 голосов
/ 20 марта 2012

Проблема в том, что ваши <div> все еще вложены в <ul>. Вы должны удалить их оттуда. Я понятия не имею, что пошло не так, и я не могу заставить это работать должным образом. Вам не хватает таблицы стилей? В любом случае, вот мое переписывание, которое использует правильную разметку:

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'
});

Вот демонстрация.

...