3

我想为 JQuery 使用 Facebox 插件,但在让它按我想要的方式运行时遇到了一些问题。包含 facebox 内容的 div 是在标签之外创建的,因此即使我正在加载一些 Web 控件,它们都不会返回到服务器。

有没有人处理过这个可以给我一些指示?

4

4 回答 4

3

在 facebox.js 周围戳了一下,我在函数 init(settings) 中遇到了这一行...

$('body').append($.facebox.settings.faceboxHtml)

我把它改成...

$('#aspnetForm').append($.facebox.settings.faceboxHtml)

它加载到表单标签中,不确定是否有任何副作用

于 2008-10-02T13:39:58.850 回答
1

您可以使用此代码注册 PostBack 事件:

btn.OnClientClick = string.Format("{0}; $.facebox.close();",ClientScript.GetPostBackEventReference(btn, null));

这将让按钮触发 PostBack。

于 2008-12-28T00:24:50.560 回答
0

即使在: $('#aspnetForm').append($.facebox.settings.faceboxHtml)

改变我发现它有问题。当您使用 firebug 查看页面源代码时,您会看到分配为 facebox div 的 div 中的所有 html 都加倍(重复)。

因此,所有具有假定唯一 id 的控件都在页面上加倍,这在回发时不是很好,我决定将 asp.net 网络控件放在 facebox 中不是一个好主意。

于 2010-04-14T18:28:10.443 回答
0

我修改了 facbox.js 来做到这一点。也许有更好的解决方案,但这就像一个魅力

这是我所做的:

  1. 在 '(function($)' 之前的 facbox.js 顶部添加两行
var willremove = '';
var willremovehtml = '';
  1. 找到 "reveal: function(data, klass) {" 并将这一行添加到函数的第一行之前。
willremove = data.attr('id')
willremovehtml = $('#'+willremove).html()
$('#'+willremove).html('')
  1. 找到 "close: function() {" 并使其如下所示。
关闭:函数(){
$(document).trigger('close.facebox')
$('#'+willremove).html(willremovehtml)
willremovehtml = ''
将删除 = ''
返回假
}
于 2010-04-22T17:28:46.730 回答