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来做到这一点。 也许有一个更好的解决方案,但这就像一个魅力
我在这做了什么:
- 在’(function($)’之前在facbox.js的顶部添加两行
var willremove =''; var willremovehtml ='';
- 找到“reveal:function(data,klass){”并在第一行函数前添加这一行。
willremove = data.attr('id') willremovehtml = $('#'+ willremove).html() $( '#' + willremove)的.html( '')
- 找到“close:function(){”并使其如下所示。
close:function(){ (文档)$ .trigger( 'close.facebox') $( '#' + willremove)的.html(willremovehtml) willremovehtml ='' willremove ='' 返回false }