Javascript Ajax加载程序处理问题

Javascript Ajax加载程序处理问题,javascript,ajax,dom,jquery,Javascript,Ajax,Dom,Jquery,我有许多编辑链接,可以远程拉一个编辑表单,它是在一个覆盖中打开的。为了给用户提供反馈,我有一个span,它在通话时取代了原来的edit tester链接。完成后,正确拆除跨度。问题是,当再次单击同一链接时,会出现两个“思考”跨度。再次单击时,将显示3,以此类推 有没有人可以根据下面的示例代码,就这是为什么以及如何修复它提出建议 显然,我只想在按下链接时出现1个“思考”范围,而不是依赖于点击次数的多重性 任何指点都将不胜感激 $('a.edit-tester').click(function()

我有许多编辑链接,可以远程拉一个编辑表单,它是在一个覆盖中打开的。为了给用户提供反馈,我有一个span,它在通话时取代了原来的edit tester链接。完成后,正确拆除跨度。问题是,当再次单击同一链接时,会出现两个“思考”跨度。再次单击时,将显示3,以此类推

有没有人可以根据下面的示例代码,就这是为什么以及如何修复它提出建议

显然,我只想在按下链接时出现1个“思考”范围,而不是依赖于点击次数的多重性

任何指点都将不胜感激

$('a.edit-tester').click(function() {
  $(this).bind('ajax:beforeSend', function() {
    $(this).toggle();
    $(this).after('<span class="thinking">Thinking</span>');
  }).bind('ajax:success', function() {
   $('span.thinking').remove();
    $(this).toggle(); 
}).bind('ajax:error', function(){
     $('span.thinking').remove();
     $(this).toggle();  
   });
});
$('a.edit-tester')。单击(函数(){
$(this.bind('ajax:beforeSend',function()){
$(this.toggle();
$(this)。在('think')之后;
}).bind('ajax:success',function()){
$('span.thinking').remove();
$(this.toggle();
}).bind('ajax:error',function()){
$('span.thinking').remove();
$(this.toggle();
});
});
我唯一的猜测是,实际的“思考”跨度并没有从DOM中移除。除此之外,这是任何人的猜测


编辑:编辑了上面代码的第一行。。。在搞乱它之后,我忘了将其更改回去。

每次单击都会将发送事件的其他副本绑定到链接。看看如何

 $(this).bind('ajax:beforeSend', function() {...}
是否每次单击链接时都会执行此操作?您可以将该块移动到父函数之前或之后,这样就可以正常工作了

编辑:为了澄清,您似乎将所有事件链接到一个表达式中。jQuery中的链接功能非常强大,但这不是它的用途。在没有看到更多您的源代码的情况下,我无法建议具体的实现,但只需添加“thinking”DIV,就可以完成以下工作:

$('a.edit-tester').live('click', function() {
    $(this).toggle();
    $(this).after('<span class="thinking">Thinking</span>');
}
$('a.edit-tester').live('click',function()){
$(this.toggle();
$(this)。在('think')之后;
}

每次单击都会将发送事件的其他副本绑定到链接。请参见

 $(this).bind('ajax:beforeSend', function() {...}
实际上每次单击链接时都会执行此操作?您可以将该块移动到父函数之前或之后,这样就可以正常工作

编辑:澄清一下,您似乎正在将所有事件链接到一个表达式中。jQuery中的链接功能强大,但这不是它的用途。在没有看到更多源代码的情况下,我无法建议具体的实现,但只需添加“thinking”DIV即可:

$('a.edit-tester').live('click', function() {
    $(this).toggle();
    $(this).after('<span class="thinking">Thinking</span>');
}
$('a.edit-tester').live('click',function()){
$(this.toggle();
$(this)。在('think')之后;
}

啊,是的,你是对的,在执行单击后没有理由绑定函数。我删除了.click调用,现在一切都很好。非常感谢!没问题。我在开始使用jQuery时犯了同样的错误-考虑到jQuery文档中使用链接的力度有多大,这特别容易,他们非常自豪它。;)巧合的是,如果我帮过你,除了接受这篇文章之外,还应该礼貌地投票支持这篇文章,尽管这不是必需的。无论如何,欢迎来到Stack Overflow。我会投票支持你的回复,但它说我至少要有15个代表才能这么做……我现在是5个。当我得到代表时,我会投票支持这个答案。:)欢迎使用Thx!:)哦,别担心。没什么区别。祝你的应用程序好运。啊,是的,你是对的,没有理由在执行单击后绑定函数。我删除了。点击呼叫,现在一切都正常了。谢谢!没问题。我在开始使用jQuery时也犯了同样的错误——考虑到jQuery文档中使用链接的力度有多大,这特别容易,他们对此感到非常自豪。;)巧合的是,如果我帮助过你,除了接受这篇文章之外,还可以投票支持这篇文章,虽然这不是必须的。无论如何,欢迎来到Stack Overflow。我会投票支持你的回复,但它说我至少要有15个代表才能这么做。。。我现在5点。当我得到代表时,我会投票支持这个答案。:)谢谢欢迎!:)哦,别担心。没什么区别。祝你申请顺利。