我正在尝试做一个简单的.fadeIn()
第一个 div 一次,但问题是这是 everyTime(xxx sec)
内的 Ajax 加载,因此每次再次加载时都会执行相同的操作。
如何防止第一个 div
至.fadeIn()
一遍又一遍,但仍然在新的div
上执行此功能?
我对 jQuery 不太熟悉,所以用勺子喂我:)
更新:
我一直在尝试你的所有建议!我真的很感谢你的帮助,但我仍然陷入困境。我还没有.one
上类。我试过$("#chatline:first").one(function(){ $(this).fadein()});
,但正如我所说,我从 jQuery 中得到了一个重大失败:p。我对 jQuery 还很陌生。
我也尝试过添加和删除类,但无法让 jQuery 记住该类已被删除,因此它会淡入淡出等。
这是脚本,稍微简短。
...
j(document).ready(function(){
//reloads every 3sec
j(".chatref").everyTime(3000,function(i){
j.ajax({url: "chatx.php",
cache: false,
success: function(html){
j(".chatref").html(html);
// These for testing
if($('div#chatline').hasClass('first')){
j("#chatline").fadeIn('slow');
}
剪断... jQuery 结束
PHP(chatx.php 的一部分):
div class='chatref' <- This one is only for jQuery's everytime function, e.g where to show the stuff. Don't know other ways to do this.
//First div I added classname first and hidden with PHP.
div class='chatline hidden first'
div class='chatline'
div class='chatline'
div class='chatline'
.... etc.
剪断...结束 PHP。
我希望我已经解释得足够好了!感谢大家的帮助!!
最佳答案
您可以使用 .ajaxStop()
将 div 绑定(bind)到第一个 ajax 请求上的淡入淡出如果是第一个请求,则解除自身绑定(bind),这样就不会多次发生,如下所示:
$("#myDiv").ajaxStop(function() {
$(this).unbind("ajaxStop").fadeIn();
});
否则,只需在实际调用 ajax 加载 div 时绑定(bind)它,以便它在返回时执行。或者,在您的成功函数中,只需使用 :hidden
selector 仅在当前隐藏时显示它。 ,像这样:
$.ajax({
//options..
success: function(data) {
//stuff..
$("#myDiv:hidden").fadeIn();
}
});
关于jQuery:在 Ajax 加载中只执行一次函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2806812/