【问题标题】:tabbed content with fancybox带有花式框的选项卡式内容
【发布时间】:2011-11-12 17:05:24
【问题描述】:

我正在尝试使用 fancybox 通过 ajax 加载动态内容。

它很好,但如果我使用默认功能或通过 ajax 使用,我不会更改选项卡。但我使用fancybox并将类型设置为“iframe”,它加载和选项卡正确交替。

我正在考虑不使用 iframe,以便该框可以轻松调整并自动调整到选定的选项卡中

实时网站位于 www.wearsitbest.com ...登录/注册链接。

$(document).ready(function() {

      $("#various2").fancybox();

      $("#various3").fancybox();

              });     </script>

精美盒子的链接

登录/注册

用于 login.php 的 tabbed.js

onload = function() { var e;变量 i = 0;而(e = document.getElementById('galleryx').getElementsByTagName ('DIV') [i++]) { if (e.className == 'on' || e.className == 'off') { e.onclick = function () { var getEls = document.getElementsByTagName('DIV'); 对于 (var z=0; z

请帮忙!!!!

【问题讨论】:

    标签: jquery ajax fancybox tabbed


    【解决方案1】:

    编辑: 好的,我查看了您的 login.php 文件。请记住,您正在使用 fancybox 插件通过 AJAX 加载内容。这与将其放入 iframe 非常不同。当您通过 AJAX 加载内容时,它是您页面的一部分,而不是您页面中的单独 HTML 文档。它将与您的页面共享相同的脚本,并且您主页上的任何脚本也可以应用于加载的内容,这就是我建议您使用 jQuery 代码的原因。

    现在,当我运行代码时,在firebug javascript 控制台中,它可以工作,而当您将其放入 login.php 文件时,它却没有。显然,fancybox 没有通过 ajax 加载脚本。看:Using fancybox in an AJAX loaded page。如果您检查 firebug 或其他工具中的 fancybox 登录元素,您可以看到没有加载任何脚本。

    因此,您需要在主页上使用单独的代码来处理登录位加载时的脚本。您可以为此使用 fancybox onComplete 选项。所以在你的代码中初始化登录链接的fancybox位,$("#various3").fancybox();,改用这个:

    $("#various3").fancybox({onComplete: function() {
        var $gallery = $('#gallery');
        var $titles = $gallery.find('div[title]');
        $titles.click(function() {
            var $this = $(this);
            if ($this.hasClass('off')) {
                $titles.removeClass('on').addClass('off');
                $this.removeClass('off').addClass('on');
                $gallery.find('.show').removeClass('show').addClass('hide').hide()
                    .end().find('#' + $this.attr('title')).removeClass('hide').addClass('show').show();
            }
        });
    });
    

    请注意,这是在您的主页上。现在,每次fancybox 加载内容时都会运行此代码。您可以在此处使用您自己的 tabbed.js javascript 代码,而不是我发布的 jQuery 代码,但是两者都可以正常工作。

    请注意,您在这里做的一件事根本上是错误的。 唯一您需要 login.php 文件作为独立页面的原因是如果用户没有启用 javascript - 在这种情况下,链接会将用户带到该页面而不是加载fancybox。 但是,如果没有 javascript,您的登录页面将无法正常工作。没有 javascript 的用户无法注册到您的网站

    您应该编写独立的 login.php 页面,这样它就可以在没有 javascript 的情况下正常工作,然后完全通过代码添加选项卡功能。您不需要在 login.php 独立页面上使用任何 javascript,因为任何访问该页面的用户都不会启用 javascript。

    让页面在没有 javascript 的情况下工作的简单方法 - 使 #Register 和 #Login div 最初都具有“显示”类。然后将我上面的 jQuery 代码的第一部分更改为:

    var $gallery = $('#gallery');
    $gallery.find('#Register').removeClass('show').addClass('hide');
    var $titles = $gallery.find('div[title]');
    

    相当长,但我希望对你有所帮助。如果您有问题,请告诉我。

    【讨论】:

    • 感谢 rahul,将尝试调整脚本,但我粘贴的脚本是处理选项卡式内容的脚本,并且在没有花式框的情况下它可以完美运行.....其次......我想要一个花式框将调整到标签页的大小并相应地缓入高度的情况
    • 我已经尝试了上面的代码,但它本身和fancybox都不起作用。我什至没有在独立文件 [login.php] 中使用 jquery,但我添加 jquery 只是为了测试你的脚本,它没有工作。请有其他建议。
    • 我相信我知道您现在的问题出在哪里 - 已编辑以反映这一点。
    猜你喜欢
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多