代码之家  ›  专栏  ›  技术社区  ›  leora Matt Lacey

在ajax调用期间禁用链接的最佳方法是什么。

  •  2
  • leora Matt Lacey  · 技术社区  · 14 年前

    $('.event').live('click', function () {
        var spinner = $("<img src='/content/images/ajax-loader.gif' />").insertAfter(this);
    

    问题是,由于它是一个异步调用,如果您多次单击某个链接,它将显示多个微调器。很明显,这只是sympton,因为我不想在第一个ajax调用返回之前再允许另一个ajax调用。

    在现有ajax调用的窗口中“禁用”链接或按钮的最佳方法是什么?

    3 回复  |  直到 14 年前
        1
  •  4
  •   user113716    14 年前

    好东西 .live() 它是基于选择器的。

    因为处理程序是为具有 .event 类,只要更改它的类,处理程序就不会再触发。

    $('.event').live('click', function () {
        $( this ).toggleClass( 'event event_clicked' );
        var spinner = $("<img src='/content/images/ajax-loader.gif' />").insertAfter(this);
    

    这将删除 event 类,并将其替换为 event_clicked live() 处理程序。

    要恢复功能,只需再次交换类。

        2
  •  0
  •   philgiese    14 年前

    return false; 要停止事件,然后在ajax调用完成后将侦听器重新分配到链接。这样,只要请求需要,它就会被禁用。

    因此,最好将回调存储在单独的变量中,以简化赋值。

        3
  •  0
  •   Elf Sternberg    14 年前
    1. 您可以隐藏链接,或将其替换为不起作用但外观相似的内容。

    2. 你可以用一个视觉上相似的div来覆盖链接,防止人们点击它。

    当AJAX调用终止时,可以将每个调用重置为它们的先前状态。