【问题标题】:Reinitialize jQuerytools Overlay on ajax loaded element在 ajax 加载的元素上重新初始化 jQuerytools 覆盖
【发布时间】:2013-08-14 12:09:43
【问题描述】:

我正在尝试在新的 ajax 加载元素上重新初始化 Overlay。 这是我的代码:

  $('input.search-files').keyup(function(event){
      if( event.keyCode == 13 ) {

          $.ajax({
          type: "GET",
          url: ...,
          dataType: "html",
          data: {...},
          beforeSend: function(){ 
              $('.tr-documento').fadeOut('fast', function(){ $(this).remove(); });
              $('.table-content').find('.table-loader').show(); 
          },
          success: function(data) {
              if( $(data).filter('tr').length == 0 ){ 
                  $('.table-loader').before( '<tr class="tr-documento"><td colspan="10">Non ci sono</td></tr>' ); 
              } else{
                  $('.table-loader').before( $(data).filter('tr') );
              }        
             $('.table-content').find('.table-loader').hide();
             $("table.table-content").tablesorter({headers: { 0: { sorter: false }, 6: { sorter: false },7: { sorter: false },8: { sorter: false },9: { sorter: false } } });
             reInitializeAjaxed();
             $(".modifica-file[rel]").overlay();
        }
      });
    }
  });

此功能在“ENTER”键上触发。 一切正常,表分拣机在第一次点击时工作。 相反,jQuerytools 覆盖事件仅在第二次点击“ENTER”时绑定。

有人知道这个问题吗? 有没有办法“活”覆盖事件而不是重新初始化每个 ajax 调用? 我试过这个:

$(document).delegate('.modifica-file[rel]', 'load', function(){ $(".modifica-file[rel]").overlay(); });

但不工作..

【问题讨论】:

    标签: javascript ajax jquery jquery-tools


    【解决方案1】:

    我认为没有打开是因为覆盖只是初始化而没有触发。

    您可以将负载属性设置为 true,例如:

    $(".modifica-file[rel]").overlay({load: true});
    

    或使用load 方法手动触发覆盖:

    $(".modifica-file[rel]").data("overlay").load();
    

    文档:http://jquerytools.org/documentation/overlay/

    示例:http://jquerytools.org/demos/overlay/trigger.html

    【讨论】:

    • Edward 我不需要在 AJAX 结束时打开它,只需重新初始化它。然后点击 $('.modifica-file') 打开它
    • 有没有办法“活”覆盖事件而不重新初始化每个 ajax 调用?
    • 啊抱歉,看错了,尝试在定义中设置属性 load: false (可能在ajax调用之外?)
    【解决方案2】:

    我在这里找到了解决方案:http://flash.flowplayer.org/forum/tools/40/21252

    这个链接有很多解决方案,我正在使用以下:

    $(".modifica-file[rel]").live('click', function () {
     $(this).overlay().load();
     $(this).overlay().load();
     return false;
    });
    

    我认为这是一个相当肮脏的解决方案......最新的 jQuery 版本不再支持 $.live() 方法......但我使用的是 1.7.2,它工作正常!

    我将此 sn-p 添加到 SUCCESS AJAX 回调的末尾。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-24
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      相关资源
      最近更新 更多