AJAXを使用して、URLの#contentを#primary内でjQueryを使用してロードしようとしています。ロードしますがフェードインしません。何が間違っていますか?
$('.menu a').live('click', function(event) {
var link = $(this).attr('href');
$('#content').fadeOut('slow', function(){
$('#primary').load(link+' #content', function(){
$('#content').fadeIn('slow');
});
});
return false;
});
助けてくれて本当にありがとうございます。
実際に、代わりにラッパーdivにエフェクトを適用することでそれを行うことができました...
$('#primary').fadeOut('slow', function(){
$('#primary').load(link+' #content', function(){
$('#primary').fadeIn('slow');
});
});
これだけ:
$('.element').load('file.html',function(){}).hide().fadeIn();
または、load()関数でこの動作をデフォルトとして追加するには:
$.fn.load_=$.fn.load;
$.fn.load=function(){
return $.fn.load_.apply(this,arguments).hide().fadeIn();
}
このようなフェード効果で.load()を使用することもできます
$("#container").fadeOut("slow").load('data.html').fadeIn('slow');
load()
を使用する場合、jQueryはhtml()
を内部的に使用して要素を更新します。つまり、要素のinnerHTML
プロパティを更新しているだけなので、アニメーションを適用することはできません。
代わりに、独自のAJAX新しいHTMLを取得するリクエストを記述し、それを要素に配置して、fadeIn()
を呼び出す必要があります。
_$('.menu a').live('click', function(event) {
var link = $(this).attr('href');
$('#content').fadeOut('slow', function() {
$.get(
link +' #content',
function(data) {
$("#primary").html(data).fadeIn('slow');
},
"html"
);
});
return false;
});
_
ここではget()
を使用しましたが、post()
またはajax()
を簡単に使用できます。
また、注意してください、live()
は廃止されました。代わりにdelegate()
を使用するか、jQuery 1.7+を使用している場合はon()
を使用する必要があります。
私はこのようなことをうまくやっていることがわかりました...
$( '#Div')。fadeOut(0).fadeIn()。load( 'foo.blah.html');
これは自然にフェードイン/フェードアウトするための最良の方法です。最初にコンテナを非表示にし、次にこのコンテナにページをロードします(ロードされますが非表示になります)。特殊効果。
$(".myClass").click(function ()
{
$("#Container").hide();
$("#Container").load("magasin.html");
$("#Container").fadeIn();
});