我有一个包含AJAX请求数据的元素。AJAX数据是从另一个页面返回的。元素中返回的数据包含一个链接,单击该链接将打开一个jQuery覆盖。onclick事件被附加到来自外部数据的链接(a onclick="…"),覆盖函数在我的主页上。
这一切都很好,直到用户单击打开覆盖的链接。当覆盖关闭时,链接将被禁用,丢失其onclick事件,然后无法重新打开覆盖。
这是一个焦点问题,还是我必须以某种方式将事件重新绑定到该链接?我不知道这里发生了什么,也不知道如何解决,我希望有好心人能帮我。
这就是将外部数据加载到元素的原因:
function load_upload_queue() {
$.ajax({ type : 'GET', url : myDomain,
dataType : 'html',
success : function(data) { $('#myElement').html(data); },
error : function() { // do something }
});
}
这是元素内部的链接,它来自上面的AJAX调用:
<a onclick="show_error_overlay(id)">Show Errors</a>
这是我的开放覆盖功能,位于主页:
function show_error_overlay(token) {
$("#show_error_overlay").overlay({
mask: '#111111',
close: "a.closeOverlayBtn",
closeOnClick: false,
closeOnEsc: false,
load: true,
onLoad: function() { // do something },
onClose: function() { // do something }
});
}
如有任何帮助,请随时询问:)
当覆盖打开和关闭时,我会使用Firefox+Firebug来监控A标记是否被任何东西触摸(移动、更改)。看看它是否保持相同的位置;最重要的是,在覆盖消失后,检查它是否仍然具有onclick值。在onLoad和onClose中检查你的"dosomethings"是否有任何可能对该链接做了什么的代码。此外,检查JS错误,尤其是在关闭覆盖期间/之后-有时错误会中断过程,使不相关的事情处于意外状态,从而导致不相关的问题。