2015-10-17 5 views
0

Я новичок в JS. У меня есть функция для ленивых загрузок изображений в карусельной загрузке. Как сделать, чтобы продолжить эту функцию после загрузки изображения?Продолжить функцию после загрузки изображения

$("#slider").on("slid.bs.carousel", function() 
{ 
    var nextItem = $("#slider").find("div.active").next(".item"); 
    if(!nextItem.length) 
    { 
     nextItem = $(".active.item").siblings(":first"); 
    } 
    var nextImage = nextItem.find("img"); 
    if(nextImage.hasClass("lazy-load")) 
    { 
     var src = nextImage.attr("data-src"); 
     nextImage.removeClass("lazy-load"); 
     nextImage.attr("src", src); 
    } 

    //the following code must be executed after nextImage is loaded: 

    clearTimeout(t); 

    $("#slider").carousel("pause"); 

    var duration = $(this).find("div.active").attr("data-interval"); 
    t = setTimeout(function() { $("#slider").carousel({interval: 1000}); }, duration-1000); 
}); 

ответ

0

просто ждать событии загрузки:

$("#slider").on("slid.bs.carousel", function() 
{ 
    var that = this; 
    var nextItem = $("#slider").find("div.active").next(".item"); 
    if(!nextItem.length) 
    { 
     nextItem = $(".active.item").siblings(":first"); 
    } 
    var nextImage = nextItem.find("img"); 
    if(nextImage.hasClass("lazy-load")) 
    { 
     var src = nextImage.attr("data-src"); 
     nextImage.removeClass("lazy-load"); 
     nextImage.attr("src", src); 
    } 

    //the following code must be executed after nextImage is loaded: 
    $(nextImage).on("load",function(){ 
     clearTimeout(t); 

     $("#slider").carousel("pause"); 

     var duration = $(that).find("div.active").attr("data-interval"); 
     t = setTimeout(function() { $("#slider").carousel({interval: 1000}); }, duration-1000); 
    }); 

}); 
Смежные вопросы