JQuery Facebox插件:在form标记中获取它
时间:2020-03-06 15:01:34 来源:igfitidea点击:
我想将Facebox插件用于JQuery,但在使其按我的方式运行时遇到一些问题。包含facebox内容的div是在标记之外创建的,因此即使我正在加载一些Web控件,也没有一个能够触发到服务器。
有没有人处理过这个可以给我一些指导的东西?
解决方案
在facebox.js上戳戳我在函数init(settings)中碰到了这一行...
$('body').append($.facebox.settings.faceboxHtml)
我将其更改为...
$('#aspnetForm').append($.facebox.settings.faceboxHtml)
并加载到form标签中,不确定是否有副作用
我们可以使用以下代码注册PostBack事件:
btn.OnClientClick = string.Format("{0}; $.facebox.close();",ClientScript.GetPostBackEventReference(btn, null));
这将使按钮触发"回发"。
即使在:之后
$('#aspnetForm')。append($。facebox.settings.faceboxHtml)
改变我发现这是有问题的。当我们使用Firebug查看页面源代码时,我们会看到div中分配为facebox div的所有html都加倍了(重复)。
因此,所有具有假定唯一ID的控件都在页面上加倍了,这在回发中效果不佳,我决定将asp.net Web控件放在面板中并不是一个好主意。
我修改了facbox.js来做到这一点。也许有更好的解决方案,但这就像一个魅力
这是我做的:
- 在facbox.js顶部的'(function($)'
var willremove = ''; var willremovehtml = '';
- 找到" reveal:function(data,klass){",并将此行添加到函数的第一行之前。
willremove = data.attr('id') willremovehtml = $('#'+willremove).html() $('#'+willremove).html('')
- 找到" close:function(){",使其如下所示。
close: function() { $(document).trigger('close.facebox') $('#'+willremove).html(willremovehtml) willremovehtml = '' willremove = '' return false }