2014-11-03 42 views
1

朋友你好我有這樣的代碼在我的索引:衝突對jQuery的過渡.load

<script> 
$(".myLink").click(function(){ 
    var href = $(this).attr('href'); 
    $('#container').load(href); 
    $('#container').fadeTo(500, 1); 
    $("html, body").animate({ scrollTop: 0 }, "normal"); 
    return false; 
}); 
</script> 

它的工作原理EXCELENTE。 接下來,當#container的打開和ITSC加載的內容,我需要關閉它,所以我用下面的代碼#container的窗口內:

$("#container").click(function(){ 
    $('#container').fadeTo(500, 0); 
    var href = $('cont_nota').attr('href'); 
    $("#container").empty(); 
    $(this).unbind(fadeTo); 
    event.preventDefault(); 
}); 

再次一切就OK了,當我點擊窗口中的任何地方它會關閉#container(如預期的那樣),除非它不會淡出,它會突然關閉,我可以忍受這一點,但是我真正在努力的是:當我嘗試從#號內打開一個新鏈接時,容器。它將新內容加載到自身(#container窗口)中,如預期的那樣,但現在它不會淡入,它會突然顯現。

這是我使用新的內容加載到同一個容器代碼:

$(".link").click(function(){ 
    var href = $(this).attr('href'); 
    $("#container").html(""); 
    $('#container').load(href); 
    $('#container').fadeTo(500, 1); 
    $("html, body").animate({ scrollTop: 0 }, "normal"); 
    return false; 
    event.preventDefault(); 
}); 

的東西可能是錯的任何想法? 感謝您的任何見解。

+1

在你關閉功能設置'href',但從來沒有使用它。你使用一個你從未設置過的變量'fadeTo'。 – Barmar 2014-11-03 22:49:05

回答

2

由於JS正在工作asynchronously,fadeTo函數不會阻塞其他行的執行。因此,執行第一行後,您的代碼立即開始執行其他行而不是fadeTo方法結束。

因此,如果您想等待完成淡入淡出,您應該在回調函數中編寫代碼。這裏是documentation的使用fadeTo功能與回調。

所以你的函數鏈應該是這樣的:

$("#container").click(function(){ 
    $('#container').fadeTo(500, 0, function() { 
     var href = $('cont_nota').attr('href'); 
     $("#container").empty().css('opacity','100'); 
     $(this).unbind(fadeTo); 
     event.preventDefault(); 
    }); 
}); 
+0

好的,感謝Batuhan,但是現在當它關閉容器時,我點擊另一個鏈接打開一個空窗口......我猜測下次我點擊一個鏈接時它會打開容器但是不透明度爲0。 我刪除了$(this).unbind(fadeTo);但仍然會出現 – 2014-11-03 23:13:41

+0

然後,在淡入之後,由於您要刪除內容,因此可以將不透明度設置回來。請參閱編輯。 – 2014-11-03 23:16:03

+0

好的...謝謝你,你的例子非常好,我唯一需要做的就是刪除$(this).unbind(fadeTo);因爲它禁用了下次使用的功能。 :)這是它如何結束上一篇:'code' $(「#cont_nota」)。click(function(){('#cont_nota')。fadeTo(500,0,function(){ $(「 #cont_nota「)。empty(); }); }); – 2014-11-04 00:01:56