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

时间:2008-10-02 13:31:24

标签: c# asp.net jquery facebox

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

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

4 个答案:

答案 0 :(得分:3)

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

$('body').append($.facebox.settings.faceboxHtml)

我把它改为......

$('#aspnetForm').append($.facebox.settings.faceboxHtml)

并在表格标签中加载,不确定是否有任何副作用

答案 1 :(得分:1)

您可以使用此代码注册PostBack事件:

btn.OnClientClick = string.Format("{0}; $.facebox.close();",ClientScript.GetPostBackEventReference(btn, null));

这会让按钮触发PostBack。

答案 2 :(得分:0)

即使在: $( '#aspnetForm')。追加($。facebox.settings.faceboxHtml)

改变我发现它有问题。当您使用firebug查看页面源时,您会看到div中指定为facebox div的所有html都被加倍(重复)。

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

答案 3 :(得分:0)

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

我在这做了什么:

  1. 在'(function($)'
  2. 之前在facbox.js的顶部添加两行
    var willremove = '';
    var willremovehtml = '';
    
    1. 找到“reveal:function(data,klass){”并在第一行功能之前添加这一行。
    2. willremove = data.attr('id')
      willremovehtml = $('#'+willremove).html()
      $('#'+willremove).html('')
      1. 找到“close:function(){”并使其如下所示。
      2. close: function() {
        $(document).trigger('close.facebox')
        $('#'+willremove).html(willremovehtml)
        willremovehtml = ''
        willremove = ''
        return false
        }