使用特定 div 时,.load jquery 函数不起作用

发布于 2024-10-21 01:06:19 字数 1167 浏览 3 评论 0原文

此行不起作用

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

This line does not work

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

while this line does

$(window).load( startSlide );

#bookcontainer is a div containing four images.

Here's my whole code:

// 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();
};

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

逆夏时光 2024-10-28 01:06:19

加载事件只能在与 URL 关联的元素上处理。来自 文档

加载事件被发送到元素
当它和所有子元素都已被
完全加载。这个活动可以是
发送到与 a 关联的任何元素
URL:图像、脚本、框架、iframe、
和窗口对象。

如果您正在等待所有图像加载,则可以将事件处理程序单独应用于这些图像。

另外:在页面上的所有元素(包括图形)完全加载之前,$(window).load(...) 不会被触发,因此无需将事件绑定到 div 确保子元素已加载。

如果您发出 AJAX 请求并尝试检测内容何时加载到该 div 中,则应将 startSlide 作为 AJAX 请求的成功回调。

The load event can only be handled on elements that are associated with a url. From the documentation:

The load event is sent to an element
when it and all sub-elements have been
completely loaded. This event can be
sent to any element associated with a
URL: images, scripts, frames, iframes,
and the window object.

If you're waiting on all of your images to load, you could apply the event handler to those images individually.

Also: $(window).load(...) will not be fired until all elements on the page are fully loaded (including graphics), so it's not necessary to bind the event to a div to make sure child elements have loaded.

If you're making an AJAX request and attempting to detect when content has been loaded into that div, you should make startSlide the success callback to your AJAX request.

偏爱你一生 2024-10-28 01:06:19

您应该使用 $('#bookcontainer').load('url', startSlide ); 看看 http://api.jquery.com/load/

You should use $('#bookcontainer').load('url', startSlide ); have a look at http://api.jquery.com/load/

萌逼全场 2024-10-28 01:06:19

div 元素不会触发 load 事件。

The div element does not trigger a load event.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文