这里的问题是我点击主导航链接它动画左边的主要内容,但我点击相同的链接两次内容得到消失。任何人请帮助我:
这是链接http://mannatstudio.com/animation/
以下是我正在使用的代码:
var tab, lasttab;
var defaultTab = '#profile-tab';
var direction = "rtl"; // Right To Left
$('.tab').hide();
function showTab(id) {
id = id.replace("-tab", "");
//window.location.hash = id;
if (tab) {
direction = (tab.attr('data-index') < $(id + "-tab").attr('data-index')) ? "rtl" : "ltr";
lasttab = tab;
lasttab.animate({
'margin-left': (direction == "rtl") ? -0 - $(window).width() : -0 + $(window).width(),
opacity: 1
}, 1000, "easeInOutExpo", function () {
$(this).hide();
});
if (tab.attr('id') == "team-tab") {
$('#members-tab').animate({
'margin-left': $(window).width(),
opacity: 1
}, 1000, "easeInOutExpo", function () {
$(this).hide();
$(this).unbind('click');
});
}
}
$('.nav').find('.current').removeClass('current');
$('a[href="' + id + '"]').parent().addClass('current').prev().css('');
tab = $(id + "-tab");
tab.css({
'margin-left': (direction == "rtl") ? -0 + $(window).width() : -0 - $(window).width(),
opacity: 1
}).show().animate({
'margin-left': 0,
opacity: 1,
}, 1000, "easeInOutExpo");
if (id == "#team") {
$('#members-tab').css({
'margin-left': $(window).width()
}).show().animate({
'margin-left': 0
}, 1000, "easeInOutExpo").find('.tab').show();
}
setFooterY();
}
function setFooterY() {
var h = tab.height() + 150 + 0;
if (tab.attr('id') == "team-tab") {
$('#members-tab').height($('#members-tab').find('.page').height() + 0);
h += $('#members-tab').height() - 0;
}
$('#content').height(h);
$('#vignettage').height(0 + h);
}
if ($('.nav').length > 0 && $('#news-page').length == 0) {
$('.nav').on('click', 'a', function (e) {
e.preventDefault();
showTab($(e.target).attr('href'));
});
if (window.location.hash != "") {
showTab(window.location.hash);
} else {
showTab(defaultTab);
}
$(document).ready(function () {
setTimeout(setFooterY, 500);
});
}
答案 0 :(得分:0)
添加一个关于您想要显示的div是否已经可见并且不会为其设置动画的验证:
...
if ($('.nav').length > 0 && $('#news-page').length == 0) {
$('.nav').on('click', 'a', function (e) {
e.preventDefault();
if(!$(''+$(e.target).attr('href')+'-tab').is(':visible')){
showTab($(e.target).attr('href'));
}
});
...
答案 1 :(得分:0)
我可以在您的代码中看到您将class="current"
分配给所选标签。您可以使用此类禁用当前锚点的onclick
。
$('.current a').click(function(e) {
e.preventDefault();
});
答案 2 :(得分:0)
我认为您应先检查lasttab
函数中的tab
和showTab
变量,然后再为其中的任何内容添加动画。
showTab
下面的代码检查下面标有//changed
的更改。
function showTab(id) {
id = id.replace("-tab", "");
//window.location.hash = id;
if (tab) {
direction = (tab.attr('data-index') < $(id + "-tab").attr('data-index')) ? "rtl" : "ltr";
lasttab = tab;
lasttab.animate({
'margin-left': (direction == "rtl") ? -0 - $(window).width() : -0 + $(window).width(),
opacity: 1
}, 1000, "easeInOutExpo", function () {
$(this).hide();
});
if (tab.attr('id') == "team-tab") {
$('#members-tab').animate({
'margin-left': $(window).width(),
opacity: 1
}, 1000, "easeInOutExpo", function () {
$(this).hide();
$(this).unbind('click');
});
}
}
$('.nav').find('.current').removeClass('current');
$('a[href="' + id + '"]').parent().addClass('current').prev().css('');
tab = $(id + "-tab");
if (lasttab !== tab) { //changed
tab.css({
'margin-left': (direction == "rtl") ? -0 + $(window).width() : -0 - $(window).width(),
opacity: 1
}).show().animate({
'margin-left': 0,
opacity: 1,
}, 1000, "easeInOutExpo");
}
if (id == "#team") {
$('#members-tab').css({
'margin-left': $(window).width()
}).show().animate({
'margin-left': 0
}, 1000, "easeInOutExpo").find('.tab').show();
}
setFooterY();
}
顺便说一句BTW(顺便说一句)检查jquery滑块here这是非常好的,你会得到各种浏览器的响应滑块已经测试过。 :d
检查下面的完整工作示例,除了我在setFooterY
函数中定义的内容高度不起作用。
var tab, lasttab;
var defaultTab = '#profile-tab';
var direction = "rtl"; // Right To Left
$('.tab').hide();
function showTab(id) {
id = id.replace("-tab", "");
//window.location.hash = id;
if (tab) {
direction = (tab.attr('data-index') < $(id + "-tab").attr('data-index')) ? "rtl" : "ltr";
lasttab = tab;
lasttab.animate({
'margin-left': (direction == "rtl") ? -0 - $(window).width() : -0 + $(window).width(),
opacity: 1
}, 1000, "easeInOutExpo", function () {
$(this).hide();
});
if (tab.attr('id') == "team-tab") {
$('#members-tab').animate({
'margin-left': $(window).width(),
opacity: 1
}, 1000, "easeInOutExpo", function () {
$(this).hide();
$(this).unbind('click');
});
}
}
$('.nav').find('.current').removeClass('current');
$('a[href="' + id + '"]').parent().addClass('current').prev().css('');
tab = $(id + "-tab");
tab.css({
'margin-left': (direction == "rtl") ? -0 + $(window).width() : -0 - $(window).width(),
opacity: 1
}).show().animate({
'margin-left': 0,
opacity: 1,
}, 1000, "easeInOutExpo");
if (id == "#team") {
$('#members-tab').css({
'margin-left': $(window).width()
}).show().animate({
'margin-left': 0
}, 1000, "easeInOutExpo").find('.tab').show();
}
setFooterY();
}
function setFooterY() {
var h = tab.height() + 150 + 0;
if (tab.attr('id') == "team-tab") {
$('#members-tab').height($('#members-tab').find('.page').height() + 0);
h += $('#members-tab').height() - 0;
}
$('#content').height(h);
$('#vignettage').height(0 + h);
}
if ($('.nav').length > 0 && $('#news-page').length == 0) {
$('.nav').on('click', 'a', function (e) {
e.preventDefault();
var clickedAnchor = $(e.target);
if (!clickedAnchor.parent().hasClass('current')) {
showTab(clickedAnchor.attr('href'));
}
});
if (window.location.hash != "") {
showTab(window.location.hash);
} else {
showTab(defaultTab);
}
$(document).ready(function () {
setTimeout(setFooterY, 500);
});
}