我正在尝试使用fancybox通过ajax加载动态内容。
它拉得很好,但如果我使用默认功能或通过ajax使用,我不会更改选项卡。但我使用fancybox并将类型设置为'iframe'它加载和标签交替正确。
我正在考虑不使用iframe,以便盒子可以轻松自动调整到所选的标签
$(document).ready(function(){
$("#various2").fancybox(); $("#various3").fancybox(); }); </script>
登录/注册
onload = function(){var e; var i = 0;而(e = document.getElementById('galleryx')。getElementsByTagName('DIV') [i ++]){if(e.className =='on'|| e.className =='off'){ e.onclick = function(){var getEls = document.getElementsByTagName( 'DIV'); for(var z = 0; z
请帮助!!!!
答案 0 :(得分:0)
编辑: 好的,我已经看了你的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
选项。因此,在您的代码中为登录链接$("#various3").fancybox();
初始化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代码,但两者都可以正常工作。
请注意,您在这里做的一件事根本就是错误的。 唯一的原因是,如果用户没有启用javascript,则需要将login.php文件作为独立页面 - 在这种情况下,链接会将用户带到该页面而不是加载fancybox。 但是,如果没有javascript,您的登录页面将无法正常运行。没有JavaScript的用户无法注册到您的网站。
您应该对独立的login.php页面进行编码,以便在没有javascript的情况下工作正常,然后完全按代码添加Tab键功能。您在login.php独立页面上不需要任何javascript,因为按原样访问该页面的任何用户都不会启用javascript。
使页面在没有javascript的情况下工作的简单方法 - 使#Register和#Login div最初都有'show'类。然后将我上面的jQuery代码的第一位更改为:
var $gallery = $('#gallery');
$gallery.find('#Register').removeClass('show').addClass('hide');
var $titles = $gallery.find('div[title]');
相当长,但我希望能帮到你。如果您有问题,请告诉我。