2012-06-14 33 views
1

我使用这个脚本加载某些DIV的内容,另一个DIV中:如何在fadeIn之前获取jQuery html()加载完成?

$(function() { 
     $('#menu a').click(function(e) { 
      e.preventDefault(); 
      var h = $(this).attr('href'); 
      $('#aqui').hmtl($(h).html()).fadeOut('slow').fadeIn('slow'); 
      //alert(h); 
     }); 
    }); 

但是,正如你可以在这里看到:http://jsfiddle.net/8rB3S/,内容是之前​​效果负荷。

我尝试这个技巧:https://stackoverflow.com/a/2745494/588842,但.html(),这不行....这只是fadeOut和不fadeIn

类似的东西:$('#aqui').fadeOut('slow').hmtl($(h).html, function(){$(this).fadeIn('slow');})

+2

你有一个错字。将'hmtl()'重命名为'html()'。 –

+0

期望的效果是什么?可能是这个>> http://jsfiddle.net/skram/8rB3S/1/ << –

+0

你的小提琴没有jQuery。 – j08691

回答

2

html()是同步的,它传递一个回调函数不会做任何事情。

fadeOut()另一方面是异步的。所以,首先调用它,并提供修改标记的回调函数,然后淡出元素回:

$("#aqui").fadeOut("slow", function() { 
    $(this).html($(h).html()).fadeIn("slow"); 
}); 
+0

完美!是我想要的效果! – Preston

+0

谢谢!!!!!!!!!!!!!! – Preston

1

我不知道什么是理想的效果,但尝试下面的代码,

DEMOhttp://jsfiddle.net/skram/8rB3S/2/

$(function() { 
    $('#menu a').click(function(e) { 
     e.preventDefault(); 
     var h = $(this).attr('href'); 
     $('#here').fadeOut(100, function() { 
      $(this).html($(h).html())   
      .fadeIn('slow'); 
     }); 
    }); 
}); 

DEMO:http://jsfiddle.net/skram/8rB3S/1/(使用#here因为这似乎是在那里你想让它)

$(function() { 
    $('#menu a').click(function(e) { 
     e.preventDefault(); 
     var h = $(this).attr('href'); 
     $('#aqui') 
      .hide() 
      .html($(h).html())   
      .fadeIn('slow');   
    }); 
}); 
+0

我想要的效果是@FrédéricHamidi回答!谢谢你的帮助! – Preston

0

使用淡出淡入功能回调:

$(function() { 
     $('#menu a').click(function(e) { 
      e.preventDefault(); 
      var h = $(this).attr('href'); 
      $('#aqui').fadeOut('slow', function(){ 
       $(this).html($(h).html()); 
       $(this).fadeIn('slow'); 
      }): 
     }); 
}); 
相关问题