JQuery Facebox插件:将其放入表单标记中

本文关键字:表单 Facebox 插件 JQuery | 更新日期: 2023-09-27 17:48:54

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

有没有人处理过这个问题,可以给我一些建议?

JQuery Facebox插件:将其放入表单标记中

浏览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查看页面源代码时,您会看到div中分配给faceboxdiv的所有html都被加倍(重复)。

因此,所有那些具有所谓唯一id的控件都会在页面上折叠起来,这在回发时不太好,我决定把asp.net web控件放在facebox中不是一个好主意。

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

我做了什么:

  1. 在facbox.js顶部的"(function($)"之前添加两行
var willremote='';var willremotehtml='';
  1. 找到"show:function(data,klass){",并将这些行添加到函数的第一行之前
willremote=data.attr('id')willremotehtml=$('#'+willremote).html()$('#'+willremove).html('')
  1. 找到"close:function(){"并使其看起来如下
close:function(){$(document).trigger('close.facebox')$('#'+willremove).html(willremotehtml)willremotehtml=''willremote=''return false}