如何删除Jquery中函数的调用
How to remove the call of a function in Jquery?
我有以下问题,当我启动一个名为Ficha()的函数的应用程序时,它会进行ajax调用,这很好。这个问题是由另一个ajax调用charge html标签引起的,该标签需要调用函数Ficha(),问题是执行了n次加载html内容,当您调用已经加载了n次的函数卡时,执行n次也会抛出"超过最大调用堆栈大小"错误。
$(document).ready(function () {
/**
* Mostrar la lista correspondiente
**/
var buscanombre = $('#buscanombre');
buscanombre.click(function (e) {
e.stopPropagation();
if (buscarNombre.hasClass('active')) {
resultadoBus.find('ul').empty();
BuscarNombre();
resultadoBus.show();
} else if (buscarServicio.hasClass('active')) {
resultadoBus.find('ul').empty();
BuscarServicio();
resultadoBus.show();
} else if (buscarUbicacion.hasClass('active')) {
resultadoBus.find('ul').empty();
BuscarUbicacion();
resultadoBus.show();
}
_iBpNActivo = 0;
}).keyup(EfectoKeyup);
Ficha();});
function BuscarNombre() {
$.ajax({
type: 'GET',
url: baseUrl + 'site/getfichas',
success: function (result) {
listFichasResultados = [];
var ResultadoBus = resultadoBus.find('ul');
ResultadoBus.empty();
var categoria;
$.each(result, function (index, item) {
switch (item.categoria) {
case 'masaje':
categoria = '<span class="s-masajes">masajes</span>';
break;
case 'VIP':
categoria = '<span class="s-vip">vip</span>';
break;
case 'PREMIUM':
categoria = '<span class="s-premium">premium</span>';
break;
case 'GOLD':
categoria = '<span class="s-gold">gold</span>';
break;
case 'madura':
categoria = '<span class="s-maduras">maduras</span>';
break;
case 'fantasia':
categoria = '<span class="s-fantasia">fantasia</span>';
break;
case 'shemale':
categoria = '<span class="s-fantasia">shemale</span>';
break;
}
ResultadoBus.append(
'<li idFichas="' + item.idFicha + '" data-modal="ficha-full" class="md-trigger" nombrePortada="' + item.nombre + '">' + item.nombre
+ categoria +
'</li>'
);
listFichasResultados.push('<li idFichas="' + item.idFicha + '" data-modal="ficha-full" class="md-trigger" nombrePortada="' + item.nombre + '">' + item.nombre + categoria + '</li>');
});
ModalEffects();
Ficha();
}
});}
我们的想法是制作一个对象来包装函数,以便能够管理函数是否已经在运行,或者是否已经完成并将再次运行。
还有xhrCount,因为你说过你使用了很多ajax调用,以及知道是否所有调用都完成的方法,你只能在回调上这样做,所以在ajax调用的一侧计数,并在回调中更新一次它的完成,当计数器达到0时,你知道它完成了,你就释放了函数。
var runOneAtATime = {
running : false,
xhrCount : 0,
freeRunning : function(){
if (--xhrCount === 0){
console.log('running');
} else {
this.running = false;
}
},
runOneAtATime : function (){
if (this.running === true){
console.log('running');
return;
}
this.running = true;
var self = this; //so you be able to call in in callbacks
//do work
//each ajax.complete calls self.freeRunning()
}
}
编辑:注释
相关文章:
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- 如何在Javascript函数调用中循环变量
- Javascript:应为赋值或函数调用,但实际看到的却是表达式
- 如何远程检查JavaScript应用程序的函数调用堆栈
- javascript函数调用不起作用
- 为什么这个函数调用会破坏程序并导致未定义的变量
- 如何通过函数调用设置图像的src
- 从全局函数调用Ember控制器上的方法
- 为什么Jquery$.ajax在函数调用中触发所有statusCode,即使调用成功
- JavaScript函数调用(arg1)(arg2)
- 打印链接时,将javascript函数调用到链接中
- 在函数调用中封装数据除了隐藏数据之外还有什么优点
- 无法从JavaScript中的函数调用对象属性
- 对中的函数调用进行排序是回调的唯一方法
- 函数调用方法有什么用
- Javascript:JSHint:应为赋值或函数调用,但实际看到的却是表达式
- HTML5(Bootstrap)通过函数调用运行动画
- 函数调用不起作用
- 函数中的Javascript函数调用