2011-03-09 39 views
0

時,此行不起作用.load jQuery函數不工作使用特定的div

$('#bookcontainer').load(startSlide); 

而這一行確實

$(window).load(startSlide); 

#bookcontainer是一個包含四個圖像的div

這裏是我的全部代碼:

// JavaScript Document 
$('#bookcontainer').load(startSlide); 

var slide; 

$('#slider').hover( 
function() { 
     $('.arrow').show(); 
}, 
function() { 
     $('.arrow').hide(); 
}); 

function startSlide() { 
    $('.book').show(); 
    slide = setInterval(slideR, 5000); 
} 


function slideR() { 
    $('.book').first().css('left', '960px').appendTo('#bookcontainer').animate(
    { 
     "left": "-=960px" 
    }, { 
     duration: 1000, 
     easing: 'easeOutCubic' 
    }); 

} 


function slideL() { 
    $('.book').last().animate(
    { "left":"+=960px" }, { 
     duration: 1000, 
     easing: 'easeOutCubic', 
     complete: function() { 
     $(this).prependTo('#bookcontainer').css('left', '0px'); 
     } 
    }); 

} 


function right() { 
    clearInterval(slide); 
    slideR(); 
    startSlide(); 
}; 


function left() { 
    clearInterval(slide); 
    slideL(); 
    startSlide(); 
}; 

回答

5

負載事件只能對那些與URL相關聯元素來處理。documentation

負載事件被髮送到一個元件 當它和所有的子元件已經 完全加載。此事件可以是 發送給任何與 URL關聯的元素:圖像,腳本,框架,iframe, 和窗口對象。

如果您正在等待加載所有圖像,可以將事件處理程序單獨應用於這些圖像。

另外:$(window).load(...)在頁面上的所有元素都完全加載(包括圖形)之前不會被觸發,所以沒有必要將事件綁定到div以確保子元素已加載。

如果您正在發出AJAX請求並嘗試檢測內容何時已加載到該div中,則應該使startSlide成功回調您的AJAX請求。

+0

一旦包含圖像的div(因此所有的圖像)被加載,我該如何調用一個函數? – 808inbinary 2011-03-10 00:10:05

+0

@ user643440:如果使用'$(window).load(...)',那麼'div'(和所有其他'div's)中的所有圖像都將被加載。 – 2011-03-10 00:15:13

+0

我給了div中的最後一個圖像ID並稱爲'$('#lastbook')。load(startSlide);'開始幻燈片將不會去所有的圖像加載,很確定。 – 808inbinary 2011-03-10 00:16:54

-1

的div元素不會觸發load事件。

+0

加載不是一個事件,但jQuery的速記方法通過Ajax調用加載內容 – jatanp 2011-03-09 23:59:14

+1

@jatanp:不正確:'load' *是一個事件,它只在某些元素上觸發,請參閱我的答案以獲取更多信息。 – 2011-03-10 00:00:42

+0

@andrew謝謝你的信息,我從來不知道這一點。 – jatanp 2011-04-04 01:25:49