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
}