在ajax加载的元素上重新初始化jQuerytools Overlay

时间:2013-08-14 12:09:43

标签: javascript ajax jquery jquery-tools

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

但不起作用..

2 个答案:

答案 0 :(得分:0)

我认为没有打开,因为叠加层只是在没有触发的情况下进行初始化。

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

答案 1 :(得分:0)

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

此链接有很多解决方案,我使用以下内容:

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

我认为这是非常脏的解决方案... $。live()方法不再支持最新的jQuery版本......但我使用1.7.2并且它工作正常!

我将此代码段添加到SUCCESS AJAX回调结束。