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