1

我正在尝试在新的 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(); });

但不工作..

4

2 回答 2

0

我在这里找到了解决方案: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,它工作正常!

我将此片段添加到 SUCCESS AJAX 回调的末尾。

于 2013-08-14T17:41:05.613 回答
0

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

您可以将负载属性设置为 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

于 2013-08-14T13:11:22.423 回答