Ajax加载器处理问题

时间:2011-07-05 22:56:30

标签: javascript ajax dom jquery

我有许多编辑链接可以远程拉动编辑表单,该表单以叠加方式显示。为了向用户提供反馈,我有一个跨度,可以在调用时替换原始的编辑测试器链接。完成后,正确删除跨度。问题是,当再次点击同一链接时,会出现'思考'跨度。再次点击时会出现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();  
   });
});

我唯一的猜测是,实际的'思考'范围没有从DOM中删除。除此之外,这是任何人的猜测......

编辑:编辑上面代码的第一行...我忘了在搞乱它之后改回来。

1 个答案:

答案 0 :(得分:1)

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

 $(this).bind('ajax:beforeSend', function() {...}
每次点击链接时,

实际上都已完成?您可以将该块移动到父函数之前或之后,它可以正常工作。

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

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