2009-11-01 79 views
3

我用AJAX填充div然後cycle plugin itjQuery Cycle Plugin(零元素?)

這裏是page,這裏是代碼調用週期:

<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> 

我得到這個錯誤:[週期]終止;通過選擇器發現零元素,但與螢火蟲我看圖像列表,因爲它應該是...

所以我很無助,任何幫助歡迎!

***注意,錯誤控制檯(警告部分)會瘋了!

回答

6

而是在$(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函數完成之前)。

+0

如預期,它的工作! – menardmam 2009-11-01 19:08:13

3

錯誤僅僅意味着沒有名爲「#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);       
+0

對此的一個壞處是,您應該確定#ani可用,否則上述代碼將始終循環。 – fernyb 2009-11-01 17:31:24