2013-02-28 95 views
2

我有一個畫廊類型的頁面縮略圖。當你點擊一個拇指時,它會將與該拇指相關的圖像加載到一個隱藏的div中,當它們完成加載然後div滑動打開。如果您單擊另一個拇指,則會關閉div,清除內容,加載新內​​容,然後再次打開它。當您加載頁面時,您可以單擊一個拇指,然後單擊另一個,但如果您返回到第一個拇指並單擊該div不會再次打開,不知道爲什麼。感謝您的幫助。jquery函數只能工作一次

我對它有jsbin在這裏設立http://jsbin.com/epawub/12/edit

我已成立了拇指的JavaScript如下:

var imgCount = 0; 
var image=$('#images'); 

$('#klossviolins').click(function() { 
    console.log("Loading..."); 
    $('#images').slideUp(500, function() { 
    $("#images").empty().ready(function(){ 
     $("<img>", { 
      src: "http://www.klossal.com/images/klossviolins/home.jpg" 
     }).appendTo("#images").load(onImage); 
     $("<img>", { 
      src: "http://www.klossal.com/images/klossviolins/services.jpg" 
     }).appendTo("#images").load(onImage); 
    });  
    }); 
    $("#info_header").empty(); 
    $('#info_header').append("Kloss Violins Website"); 
}); 


$('#light_dance').click(function() { 
    console.log("Loading..."); 
    $('#images').slideUp(500, function() { 
    $("#images").empty().ready(function(){ 
     $("<img>", { 
      src: "http://www.klossal.com/light_dance_1.jpg" 
     }).appendTo("#images").load(onImage); 
     $("<img>", { 
      src: "http://www.klossal.com/light_dance_var.png" 
     }).appendTo("#images").load(onImage); 
     $("<img>", { 
      src: "http://www.klossal.com/light_dance_2.jpg" 
     }).appendTo("#images").load(onImage); 
    });  
    }); 
    $("#info_header").empty(); 
    $('#info_header').append("Dancing With Light Series"); 
}); 




function onImage(e) 
{ 
    console.log("Image loaded"); 
    imgCount++; 

    if (imgCount == image.children().length) 
    { 
     image.slideDown(500); 
    } 
} 
+0

。就緒並沒有做什麼,你覺得它在你的代碼。 – 2013-02-28 15:50:16

+0

嗯,它做什麼? – loriensleafs 2013-02-28 15:51:31

+0

你的情況絕對沒有,它只是立即運行它裏面的代碼,因爲'document'已經準備好了。 – 2013-02-28 15:53:31

回答

2

您設置圖像的之前,必須綁定到加載事件src值,否則如果圖像被緩存,則在綁定到它之前將觸發加載事件。

$("<img>").load(onImage).attr("src","http://www.klossal.com/light_dance_1.jpg").appendTo("#images"); 
// repeat for all similar 

此外,請確保您復位imgCount回到0

... 
if (imgCount == image.children().length) 
{ 
    image.slideDown(500); 
    imgCount = 0; 
    ... 
+0

所以我更新了jsbin,同樣的問題仍然存在,如果我點擊第一個,那很好,然後第二個,沒關係,然後回到第一個沒有任何反應。 http://jsbin.com/epawub/15/edit – loriensleafs 2013-02-28 15:58:52

+0

你永遠不會重置imgCount回到0,請參閱編輯http://jsbin.com/epawub/16/edit – 2013-02-28 16:05:00

+0

awww那做到了,你是男人,非常感謝花時間幫助我 – loriensleafs 2013-02-28 16:08:11