jQuery:在 Ajax 加载中只执行一次函数

标签 jquery

我正在尝试做一个简单的.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/

相关文章:

Jquery Mobile - 突出显示选项卡

javascript - 为什么一些 jQuery 程序员使用 jQuery 函数,如 $.get、$.getJSON 和 $.when 而不是 $.ajax

javascript - css api 的 jquery if else 条件

javascript - 为多个相似元素触发脚本

javascript - 根据选择显示图像阵列

javascript - 如何清除/清空 dojo 小部件

javascript - 遍历元素时在数组中向前移动

javascript - jquery改变函数内部的全局变量

javascript - 我怎样才能让 jQuery.css() 胜过样式表?

javascript - 顺利展开侧边菜单