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

jQuery:在Ajax加载中只执行一次函数,jquery,Jquery,我试图在第一个div中执行一次简单的.fadeIn(),但问题是每次(xxx秒)加载时,这是内部的Ajax加载,因此每次再次加载时它都会执行相同的操作 如何防止第一个div反复切换到.fadeIn(),但仍然在新的div上执行此功能 我不太熟悉jQuery,所以请用勺子喂我:) 更新: 我一直在尝试你所有的建议!我真的很感激你的帮助,但我还是被困住了。我没有.one可以用。我尝试了$(“#chatline:first”).one(function(){$(this.fadein()}),但正如我

我试图在第一个div中执行一次简单的
.fadeIn()
,但问题是每次(xxx秒)加载时,这是
内部的Ajax加载,因此每次再次加载时它都会执行相同的操作

如何防止第一个
div
反复切换到
.fadeIn()
,但仍然在新的
div
上执行此功能

我不太熟悉jQuery,所以请用勺子喂我:)

更新: 我一直在尝试你所有的建议!我真的很感激你的帮助,但我还是被困住了。我没有
.one
可以用。我尝试了
$(“#chatline:first”).one(function(){$(this.fadein()}),但正如我所说,jQuery:p出现了一个重大故障。我对jQuery还很陌生

我还尝试添加和删除类,但无法让jQuery记住该类已被删除,因此它会淡入淡出,等等

这是脚本,略显简短

剪断。。。jQuery结束

PHP(chatx.PHP的一部分):


div class='chatref'您可以在第一个ajax请求时使用if将div绑定到fadein,解除绑定以使其不会发生多次,如下所示:

$("#myDiv").ajaxStop(function() {
  $(this).unbind("ajaxStop").fadeIn();
});
$.ajax({
 //options..
 success: function(data) {
   //stuff..
   $("#myDiv:hidden").fadeIn();
 }
});
否则,在实际调用加载div的ajax时只需绑定它,这样它就会在返回时执行。或者,在success函数中,仅当它当前处于隐藏状态时才显示它,如下所示:

$("#myDiv").ajaxStop(function() {
  $(this).unbind("ajaxStop").fadeIn();
});
$.ajax({
 //options..
 success: function(data) {
   //stuff..
   $("#myDiv:hidden").fadeIn();
 }
});

您可以在第一个ajax请求时使用if将div绑定到fadein,解除绑定,这样就不会发生多次,如下所示:

$("#myDiv").ajaxStop(function() {
  $(this).unbind("ajaxStop").fadeIn();
});
$.ajax({
 //options..
 success: function(data) {
   //stuff..
   $("#myDiv:hidden").fadeIn();
 }
});
否则,在实际调用加载div的ajax时只需绑定它,这样它就会在返回时执行。或者,在success函数中,仅当它当前处于隐藏状态时才显示它,如下所示:

$("#myDiv").ajaxStop(function() {
  $(this).unbind("ajaxStop").fadeIn();
});
$.ajax({
 //options..
 success: function(data) {
   //stuff..
   $("#myDiv:hidden").fadeIn();
 }
});
jQuery中有一个“one()”方法,类似于“bind()”,但在执行后删除事件。我建议试一试

jQuery中有一个“one()”方法,类似于“bind()”,但在执行后删除事件。我建议试一试


这取决于Ajax请求链的外观。但是,如果您知道它总是第一次调用,您可以只向div添加一个类。也就是说,
class=“fadeIn”
并在淡入后将其删除

$('.fadeIn').fadeIn(function () { $(this).removeClass('fadeIn') };

这取决于Ajax请求链的外观。但是,如果您知道它总是第一次调用,您可以只向div添加一个类。也就是说,
class=“fadeIn”
并在淡入后将其删除

$('.fadeIn').fadeIn(function () { $(this).removeClass('fadeIn') };

如果使用数据存储,只需将其显示后的值设置为true,并在将来显示之前进行检查。类似于

if(!$('div#yourDiv').data('hasShow')){
     $('div#yourDiv').data('hasShown', true).fadeIn();
}
编辑-

根据您发布的代码,我得出以下结论:

$(document).ready(function(){

    // Hide the chat line div on load.
    $('div#chatline').hide();

    $("div#chatref").everyTime(3000,function(i){ 
        $.ajax({url: "chatx.php", cache: false, success: function(updated){
            $('div#chatref').html(updated);
            $('div#chatline').is(':hidden').fadeIn('slow');
        }});
    });
});
您需要PHP页面为聊天行输出一个div,如下所示

<div id="chatline"></div>

为了聊天室

<div id="chatref"></div>


希望这能有所帮助。

使用数据存储如何,只要在显示数据后将其设置为true,并在以后显示之前进行检查即可。类似于

if(!$('div#yourDiv').data('hasShow')){
     $('div#yourDiv').data('hasShown', true).fadeIn();
}
编辑-

根据您发布的代码,我得出以下结论:

$(document).ready(function(){

    // Hide the chat line div on load.
    $('div#chatline').hide();

    $("div#chatref").everyTime(3000,function(i){ 
        $.ajax({url: "chatx.php", cache: false, success: function(updated){
            $('div#chatref').html(updated);
            $('div#chatline').is(':hidden').fadeIn('slow');
        }});
    });
});
您需要PHP页面为聊天行输出一个div,如下所示

<div id="chatline"></div>

为了聊天室

<div id="chatref"></div>


希望这有帮助。

显示一些代码将有助于解决问题显示一些代码将有助于解决问题。。对我来说没什么意义。。汤匙D脚本看起来像这样:j(“.chatref”).everyTime(2000,函数(i){j.ajax({url:“chat.php?”),cache:false,success:function(html){j(.chatref”).html(html);.chatref是显示所有聊天行的主div:spoon?:d脚本看起来像这样:j(.chatref”)。其中的fadeIn在哪里?你基本上可以用
j(“.chatref:hidden”).fadeIn()替换它。
Hm.。对我来说没有多大意义。spoon?:d脚本看起来像这样:j(.chatref”)。everyTime(2000,函数(i){j.ajax({url:“chat.php?”,cache:false,success:function(html){j(“.chatref”).html(html);.chatref是显示所有聊天行的主div:因此,正如您所看到的那样,每2秒重新加载一次。@thundercat-其中的fadeIn在哪里?您基本上可以用
j(“.chatref:hidden”)替换它。fadeIn()
为什么不直接使用
is(“:hidden”)
?简单得多:)我发现#chatline应该是一个类..因为它有多行。chatref只围绕着它全部显示。这是固定的。我在这里尝试的所有操作都会使第一行fadein,但当它再次加载时(everytime函数),它再次淡入。目标是只淡入新行一次。djizuz..这有多难?:p为什么不只是使用
is(“:hidden”)
?更简单:)我发现#chatline应该是一个类..因为它有多行。chatref只围绕它全部显示。这是固定的。我在这里尝试的所有操作都会使第一行fadein,但当它再次加载时(每次函数),它再次淡入。目标是只淡入新行一次。djizuz..这有多难?:嗯,我没有点击功能..我怎么能不点击就使用它?嗯,我没有点击功能..我怎么能不点击就使用它?