2011-03-09 58 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