jQuery Cycle Plugin (нулевой элемент?) - PullRequest
3 голосов
/ 01 ноября 2009

Я использовал AJAX, чтобы заполнить div, а затем, цикл подключил его !

вот страница , а вот цикл вызова кода:

<script type="text/javascript">
    $(function() {
        $("#photoviewer").load("photo-list.shtml #ani");
        alert ('photo loaded!');
        $(document).ready(function() {
            $('#ani').cycle({ fx:      'turnDown',
                              speed:   'fast',
                              timeout: 0,
                              pager:   '#nav' });
            alert('done!');     
        });
    });
</script> 

Я получаю эту ошибку: [цикл] завершается; Нулевые элементы найдены селектором, но с Firebug я вижу список изображений там, где он должен быть ...

так что я не в курсе, любая помощь приветствуется!

*** обратите внимание, консоль ошибок (раздел предупреждений) сходит с ума!

Ответы [ 2 ]

6 голосов
/ 01 ноября 2009

Вместо инициализации цикла в $(document).ready(), сделайте это в обратном вызове load, чтобы он не выполнялся до тех пор, пока ваш вызов ajax не завершил и не построил #ani div:

    $(function() {
        $("#photoviewer").load("photo-list.shtml #ani", function() {
            $('#ani').cycle({ fx:      'turnDown',
                              speed:   'fast',
                              timeout: 0,
                              pager:   '#nav' });
        });
    });

В существующем состоянии инициализация подключаемого модуля цикла выполняется до загрузки изображений (до завершения функции load).

3 голосов
/ 01 ноября 2009

Ошибка просто означает, что нет доступного селектора с именем "#ani", похоже, что "#ani" является дочерним узлом "#photoviewer", и когда запрос ajax завершается, он добавляет "#ani".

После звонка:

 $("#photoviewer").load("photo-list.shtml #ani"); 

Попробуйте это:

var interval = setInterval(function(){ 
  if(jQuery("#ani").length > 0) {
    clearInterval(interval); 
    jQuery('#ani').cycle({fx:'turnDown', speed:  'fast', timeout: 0, pager:  '#nav'}); 
  }
}, 1);                          
...