JQuery Facebox插件:将其放在表单标签中

我想为JQuery使用Facebox插件,但是有一些问题让它按我想要的方式运行。 容纳facebox内容的div是在标记之外创建的,所以即使我正在加载一些Web控件,它们也都没有回复到服务器。

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

在facebox.js周围戳我在函数init(设置)中遇到了这一行……

$('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中指定为facebox div的所有html都被加倍(重复)。

因此所有那些具有假设的唯一ID的控件在页面上加倍,这在回发上不是很好,我已经决定将asp.net web控件放在facebox中并不是一个好主意。

我修改了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(){”并使其如下所示。
  close:function(){
 (文档)$ .trigger( 'close.facebox')
 $( '#' + willremove)的.html(willremovehtml)
 willremovehtml =''
 willremove =''
返回false
 }