Попробуйте:
success: function(msg) {
$('.ContentsMainRight').fadeOut(500, function() {
$('.ContentsMainRight').html(msg.d);
$('.ContentsMainRight').fadeIn(1000);
});
},
В основном проблема заключается в том, что вы скрываете children , а затем заменяете дочерние элементы своим вызовом html()
. Замененный контент не скрыт, поэтому он сразу виден, и это то, что вы видите.
Другая проблема заключается в том, что при наличии нескольких детей вы будете заменять всех детей на обратный вызов каждого ребенка. Когда вы вызываете fadeOut()
для нескольких элементов, он вызывается отдельно для каждого элемента.
Чтобы дать вам пример того, что я имею в виду, предположим:
<ul>
<li>one</li>
<li>two</li>
<li>three</li>
</ul>
Сравните:
$("ul").fadeOut(500, function() {
alert("replacing");
$(this).html("<li>four</li><li>five</li><li>six</li>").fadeIn(500);
});
с:
$("ul").children().fadeOut(500, function() {
alert("replacing"); // this will be called three times
$(this).html("<li>four</li><li>five</li><li>six</li>").children().fadeIn(500);
});
или чтобы было еще яснее:
$("ul").children().fadeOut(500, function() {
alert("replacing"); // this will be called three times
$(this).append("<li>four</li><li>five</li><li>six</li>").children().fadeIn(500);
});