2014-11-03 63 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