我想为 JQuery 使用 Facebox 插件,但在让它按我想要的方式运行时遇到了一些问题。包含 facebox 内容的 div 是在标签之外创建的,因此即使我正在加载一些 Web 控件,它们都不会返回到服务器。
有没有人处理过这个可以给我一些指示?
在 facebox.js 周围戳了一下,我在函数 init(settings) 中遇到了这一行...
$('body').append($.facebox.settings.faceboxHtml)
我把它改成...
$('#aspnetForm').append($.facebox.settings.faceboxHtml)
它加载到表单标签中,不确定是否有任何副作用
您可以使用此代码注册 PostBack 事件:
btn.OnClientClick = string.Format("{0}; $.facebox.close();",ClientScript.GetPostBackEventReference(btn, null));
这将让按钮触发 PostBack。
即使在: $('#aspnetForm').append($.facebox.settings.faceboxHtml)
改变我发现它有问题。当您使用 firebug 查看页面源代码时,您会看到分配为 facebox div 的 div 中的所有 html 都加倍(重复)。
因此,所有具有假定唯一 id 的控件都在页面上加倍,这在回发时不是很好,我决定将 asp.net 网络控件放在 facebox 中不是一个好主意。
我修改了 facbox.js 来做到这一点。也许有更好的解决方案,但这就像一个魅力
这是我所做的:
var willremove = ''; var willremovehtml = '';
willremove = data.attr('id') willremovehtml = $('#'+willremove).html() $('#'+willremove).html('')
关闭:函数(){ $(document).trigger('close.facebox') $('#'+willremove).html(willremovehtml) willremovehtml = '' 将删除 = '' 返回假 }