1

我使用此脚本在另一个 div 中加载某些 div 的内容:

$(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/,内容是在fadeOut()生效前加载的。

我试试这个技巧:https ://stackoverflow.com/a/2745494/588842 ,但是有.html(),这不起作用....只有这个fadeOut,不fadeIn

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

4

3 回答 3

2

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

另一方面,fadeOut()是异步的。因此,首先调用它并提供一个回调函数来修改标记,然后将元素淡入:

$("#aqui").fadeOut("slow", function() {
    $(this).html($(h).html()).fadeIn("slow");
});
于 2012-06-14T16:55:16.753 回答
1

我不确定想要的效果是什么,但试试下面的代码,

演示:http: //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');
        });
    });
});

或者

演示: 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');        
    });
});
于 2012-06-14T16:53:42.493 回答
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');
            }):
        });
});
于 2012-06-14T16:56:46.780 回答