fadeIn 或 show 不适用于由 ajax 加载/添加的元素
我搜索了类似的问题,但没有运气。
如果我用ajax向DOM添加一个元素,我无法控制它。我知道,实时方法适用于事件,但我只想显示/淡出它。
有办法控制这些吗?
$("#menu > div > ul > li > a").click(function(){
var page = $(this).attr("href").replace('#','');
$.ajax({
url: page + '.php',
beforeSend: function() { $("#page").fadeOut(); $('#loader').fadeIn("slow"); },
complete: function() { $('#loader').fadeOut(); },
success: function(data){
$('body').append(data);
$(data).show();
}
});
});
数据包含以下内容,它是一个字符串;
<div id="container-01"> <div class="left"> left </div> <div class="right"> right </div> </div>
谢谢。
I searched for similar questions but no luck.
If I add an element to DOM with ajax, I can't control it. I know, live method will works for events but I just want to show/fade it.
Is there a way to control those ?
$("#menu > div > ul > li > a").click(function(){
var page = $(this).attr("href").replace('#','');
$.ajax({
url: page + '.php',
beforeSend: function() { $("#page").fadeOut(); $('#loader').fadeIn("slow"); },
complete: function() { $('#loader').fadeOut(); },
success: function(data){
$('body').append(data);
$(data).show();
}
});
});
The data contains following and Its a string;
<div id="container-01"> <div class="left"> left </div> <div class="right"> right </div> </div>
Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为如果将所有加载的内容放入包装元素中并尝试切换此包装,效果会更好。顺便说一句,
这假设您的数据是 HTML。
编辑:看到您传递的数据,您可以轻松地这样做:
这将需要一个
#container-01{display:none;}
样式规则,但我想这应该没问题。I think you'd be better off if you put all your loaded content into a wrapper element and try to toggle this wrapper. Sth like:
This assumes that your data is HTML, btw.
EDIT: seeing your passed data you could easily do it like this:
This will need an
#container-01{display:none;}
style rule, but I guess that should be ok.是的,您需要在回调函数上执行此操作,您将获取数据,然后淡入淡出。但是您可能需要在淡入之前先隐藏内容。您还可以隐藏容器 div 并执行 .load 来加载 html,然后在回调中淡入。
所以试试这个:
由于某种原因,就数据而言,它没有从 jsfiddle 获得任何东西。所以,我也只是在其中添加一些文字。
http://jsfiddle.net/G9Sa3/
Yea you need to do this on the callback function, you will get your data and then do fadein. But you may need to hide the content first before you fade it in. You could also hide a container div and do .load to load the html and then fadein on the callback.
So try this:
For some reason it's not getting anything from jsfiddle, as far as data goes. So, i just add some text in there as well.
http://jsfiddle.net/G9Sa3/