导航打开时禁用导航切换按钮的悬停效果
Disabling hover effect of nav toggle button when nav is open
我试图在导航菜单打开时禁用导航切换按钮的悬停效果。我在单击按钮时切换 class 并且 运行ning 一个 if 语句说如果 class 没有切换它应该只 运行 动画。我可以在控制台中看到 div.toggle-btn 正在切换禁用悬停 class 但它并没有像我期望的那样 disable/enable javascript 代码。
var btnhover = new TimelineMax({paused: true});
var navtoggle = $('.toggle-btn').hasClass('disable-hover');
if (navtoggle === false) {
if ($(window).width() >= 768) {
btnhover.to(".one", .3, {
y: 5,
ease: Expo.easeInOut,
})}
else {
btnhover.to(".one", .3, {
x: -5,
ease: Expo.easeInOut,
})
}
}
if (navtoggle === false) {
if ($(window).width() >= 768) {
btnhover.to(".two", .3, {
y: -5,
ease: Expo.easeInOut,
delay: -.3
})}
else {
btnhover.to(".two", .3, {
x: 5,
ease: Expo.easeInOut,
delay: -.3
})
}
}
function btnover(){
if (navtoggle === false) {
btnhover.play();
}
}
function btnout(){
if (navtoggle === false) {
btnhover.reverse();
}
}
$(".toggle-btn").hover(btnover, btnout);
function disableHover() {
$("div.toggle-btn").toggleClass("disable-hover");
}
$(document).on("click", ".toggle-btn", function() {
disableHover();
});
首先,您使用的是 navtoggle = false
,这将转换为 'navtoggle equals false',当您更新变量的值时,它将始终 return 为真。
您想使用 navtoggle === false
或 !navtoggle
,这将转换为 'is navtoggle equal to false?'。
其次,您也没有检查按钮是否在 btnover/btnout 功能内部具有禁用 class 功能。您应该在这些函数中添加一个条件来检查动画是否应该播放。
最后,您需要在每次悬停时实际检查按钮是否有 class。一旦你设置了 navtoggle 变量,它就不会再改变了。检查 btnover/btnout 函数内部,看看按钮是否显示 class.
function btnover(){
var navtoggle = $('.toggle-btn').hasClass('disable-hover');
if (navtoggle === false) {
btnhover.play();
}
}
我试图在导航菜单打开时禁用导航切换按钮的悬停效果。我在单击按钮时切换 class 并且 运行ning 一个 if 语句说如果 class 没有切换它应该只 运行 动画。我可以在控制台中看到 div.toggle-btn 正在切换禁用悬停 class 但它并没有像我期望的那样 disable/enable javascript 代码。
var btnhover = new TimelineMax({paused: true});
var navtoggle = $('.toggle-btn').hasClass('disable-hover');
if (navtoggle === false) {
if ($(window).width() >= 768) {
btnhover.to(".one", .3, {
y: 5,
ease: Expo.easeInOut,
})}
else {
btnhover.to(".one", .3, {
x: -5,
ease: Expo.easeInOut,
})
}
}
if (navtoggle === false) {
if ($(window).width() >= 768) {
btnhover.to(".two", .3, {
y: -5,
ease: Expo.easeInOut,
delay: -.3
})}
else {
btnhover.to(".two", .3, {
x: 5,
ease: Expo.easeInOut,
delay: -.3
})
}
}
function btnover(){
if (navtoggle === false) {
btnhover.play();
}
}
function btnout(){
if (navtoggle === false) {
btnhover.reverse();
}
}
$(".toggle-btn").hover(btnover, btnout);
function disableHover() {
$("div.toggle-btn").toggleClass("disable-hover");
}
$(document).on("click", ".toggle-btn", function() {
disableHover();
});
首先,您使用的是 navtoggle = false
,这将转换为 'navtoggle equals false',当您更新变量的值时,它将始终 return 为真。
您想使用 navtoggle === false
或 !navtoggle
,这将转换为 'is navtoggle equal to false?'。
其次,您也没有检查按钮是否在 btnover/btnout 功能内部具有禁用 class 功能。您应该在这些函数中添加一个条件来检查动画是否应该播放。
最后,您需要在每次悬停时实际检查按钮是否有 class。一旦你设置了 navtoggle 变量,它就不会再改变了。检查 btnover/btnout 函数内部,看看按钮是否显示 class.
function btnover(){
var navtoggle = $('.toggle-btn').hasClass('disable-hover');
if (navtoggle === false) {
btnhover.play();
}
}