我正在尝试在新的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(); });
但不起作用..
答案 0 :(得分:0)
我认为没有打开,因为叠加层只是在没有触发的情况下进行初始化。
您可以将load属性设置为true,如:
$(".modifica-file[rel]").overlay({load: true});
或使用load
方法手动触发叠加层:
$(".modifica-file[rel]").data("overlay").load();
答案 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回调结束。