Javascript 根据变量更改鼠标事件
我打赌这很简单,我会尽力解释清楚: 我试图建立一个画廊,以显示不同的过渡和揭示(使叠加的div过渡看不见,例如),我希望有一个按钮,用户可以点击体验相同的过渡与悬停和点击 为了实现这一点,我简单地创建了一个名为Javascript 根据变量更改鼠标事件,javascript,jquery,Javascript,Jquery,我打赌这很简单,我会尽力解释清楚: 我试图建立一个画廊,以显示不同的过渡和揭示(使叠加的div过渡看不见,例如),我希望有一个按钮,用户可以点击体验相同的过渡与悬停和点击 为了实现这一点,我简单地创建了一个名为toggleButton的新变量,将其初始化为0,并做了一个条件语句,表示如果变量为0,则转换应在悬停状态下工作,如果toggleButton为1,则转换将通过单击来工作。 每次按下更改按钮时,我都会在控制台上记录变量更改,它工作正常,没有错误,但我无法实现我想要的,转换从未更改,它始终保
toggleButton
的新变量,将其初始化为0
,并做了一个条件语句,表示如果变量为0,则转换应在悬停状态下工作,如果toggleButton
为1
,则转换将通过单击来工作。
每次按下更改按钮时,我都会在控制台上记录变量更改,它工作正常,没有错误,但我无法实现我想要的,转换从未更改,它始终保持我初始化它的方式(如果我将其初始化为1,则转换通过单击来工作)
我随便举了一个小例子来说明我所说的,我希望你能通过看它来理解我想要什么,以防我无法用文字来解释:
提前谢谢 在第21行设置鼠标指针的If/Else只运行一次 尝试创建.mouseenter()函数和.click()函数,但在每个函数中,检查切换按钮的状态:
$(".thumb").mouseenter(function() {
if (toggleButton === 0) {
}
}
$(".thumb").click(function() {
if (toggleButton === 1) {
{
}
这就是你的想法吗?在第21行设置鼠标盖的If/Else只运行一次 尝试创建.mouseenter()函数和.click()函数,但在每个函数中,检查切换按钮的状态:
$(".thumb").mouseenter(function() {
if (toggleButton === 0) {
}
}
$(".thumb").click(function() {
if (toggleButton === 1) {
{
}
这就是你的想法吗?在第21行设置鼠标盖的If/Else只运行一次 尝试创建.mouseenter()函数和.click()函数,但在每个函数中,检查切换按钮的状态:
$(".thumb").mouseenter(function() {
if (toggleButton === 0) {
}
}
$(".thumb").click(function() {
if (toggleButton === 1) {
{
}
这就是你的想法吗?在第21行设置鼠标盖的If/Else只运行一次 尝试创建.mouseenter()函数和.click()函数,但在每个函数中,检查切换按钮的状态:
$(".thumb").mouseenter(function() {
if (toggleButton === 0) {
}
}
$(".thumb").click(function() {
if (toggleButton === 1) {
{
}
这就是您的想法吗?它不起作用的原因是您在加载时只运行了一次函数。您还需要确保每次运行切换事件时都会运行该函数 这就是我要做的:
$(function(){
var toggleButton = 0 ;
console.log(toggleButton);
$('.switchButton').toggle(function(){
toggleButton = 1 ;
$('.toggleButton').css({'transform' : 'rotateZ(0deg)'});
$('#hover').removeClass('active');
$('#click').addClass('active');
console.log(toggleButton);
runTransition();
}, function(){
toggleButton = 0 ;
$('.toggleButton').css({'transform' : 'rotateZ(180deg)'});
$('#hover').addClass('active');
$('#click').removeClass('active');
console.log(toggleButton);
runTransition();
});
runTransition();
// thumb hover
function runTransition(){
if ( toggleButton == 0 ) {
$('.thumb').mouseenter(function(){
$('.overlay').css({'left' : '-100%'});
}).mouseleave(function(){
$('.overlay').css({'left' : '0%'});
});
} else {
$('.thumb').unbind('mouseenter mouseleave');
$('.thumb').toggle(function(){
$('.overlay').css({'left' : '-100%'});
}, function(){
$('.overlay').css({'left' : '0%'});
});
}
}
});
它不起作用的原因是,加载时只运行一次函数。您还需要确保每次运行切换事件时都会运行该函数 这就是我要做的:
$(function(){
var toggleButton = 0 ;
console.log(toggleButton);
$('.switchButton').toggle(function(){
toggleButton = 1 ;
$('.toggleButton').css({'transform' : 'rotateZ(0deg)'});
$('#hover').removeClass('active');
$('#click').addClass('active');
console.log(toggleButton);
runTransition();
}, function(){
toggleButton = 0 ;
$('.toggleButton').css({'transform' : 'rotateZ(180deg)'});
$('#hover').addClass('active');
$('#click').removeClass('active');
console.log(toggleButton);
runTransition();
});
runTransition();
// thumb hover
function runTransition(){
if ( toggleButton == 0 ) {
$('.thumb').mouseenter(function(){
$('.overlay').css({'left' : '-100%'});
}).mouseleave(function(){
$('.overlay').css({'left' : '0%'});
});
} else {
$('.thumb').unbind('mouseenter mouseleave');
$('.thumb').toggle(function(){
$('.overlay').css({'left' : '-100%'});
}, function(){
$('.overlay').css({'left' : '0%'});
});
}
}
});
它不起作用的原因是,加载时只运行一次函数。您还需要确保每次运行切换事件时都会运行该函数 这就是我要做的:
$(function(){
var toggleButton = 0 ;
console.log(toggleButton);
$('.switchButton').toggle(function(){
toggleButton = 1 ;
$('.toggleButton').css({'transform' : 'rotateZ(0deg)'});
$('#hover').removeClass('active');
$('#click').addClass('active');
console.log(toggleButton);
runTransition();
}, function(){
toggleButton = 0 ;
$('.toggleButton').css({'transform' : 'rotateZ(180deg)'});
$('#hover').addClass('active');
$('#click').removeClass('active');
console.log(toggleButton);
runTransition();
});
runTransition();
// thumb hover
function runTransition(){
if ( toggleButton == 0 ) {
$('.thumb').mouseenter(function(){
$('.overlay').css({'left' : '-100%'});
}).mouseleave(function(){
$('.overlay').css({'left' : '0%'});
});
} else {
$('.thumb').unbind('mouseenter mouseleave');
$('.thumb').toggle(function(){
$('.overlay').css({'left' : '-100%'});
}, function(){
$('.overlay').css({'left' : '0%'});
});
}
}
});
它不起作用的原因是,加载时只运行一次函数。您还需要确保每次运行切换事件时都会运行该函数 这就是我要做的:
$(function(){
var toggleButton = 0 ;
console.log(toggleButton);
$('.switchButton').toggle(function(){
toggleButton = 1 ;
$('.toggleButton').css({'transform' : 'rotateZ(0deg)'});
$('#hover').removeClass('active');
$('#click').addClass('active');
console.log(toggleButton);
runTransition();
}, function(){
toggleButton = 0 ;
$('.toggleButton').css({'transform' : 'rotateZ(180deg)'});
$('#hover').addClass('active');
$('#click').removeClass('active');
console.log(toggleButton);
runTransition();
});
runTransition();
// thumb hover
function runTransition(){
if ( toggleButton == 0 ) {
$('.thumb').mouseenter(function(){
$('.overlay').css({'left' : '-100%'});
}).mouseleave(function(){
$('.overlay').css({'left' : '0%'});
});
} else {
$('.thumb').unbind('mouseenter mouseleave');
$('.thumb').toggle(function(){
$('.overlay').css({'left' : '-100%'});
}, function(){
$('.overlay').css({'left' : '0%'});
});
}
}
});
当呈现页面时,您正在绑定,状态将永远不会更新该页面。您需要在更改事件中绑定/取消绑定,或在鼠标/单击事件中添加一个标志,以查看它是否应运行。toggle(fn,fn)已弃用,应避免在新代码中使用它。我不知道,谢谢!您建议我用什么替换它?当呈现页面时,您正在绑定,状态将永远不会更新。您需要在更改事件中绑定/取消绑定,或在鼠标/单击事件中添加一个标志,以查看它是否应运行。toggle(fn,fn)已弃用,应避免在新代码中使用它。我不知道,谢谢!您建议我用什么替换它?当呈现页面时,您正在绑定,状态将永远不会更新。您需要在更改事件中绑定/取消绑定,或在鼠标/单击事件中添加一个标志,以查看它是否应运行。toggle(fn,fn)已弃用,应避免在新代码中使用它。我不知道,谢谢!您建议我用什么替换它?当呈现页面时,您正在绑定,状态将永远不会更新。您需要在更改事件中绑定/取消绑定,或在鼠标/单击事件中添加一个标志,以查看它是否应运行。toggle(fn,fn)已弃用,应避免在新代码中使用它。我不知道,谢谢!你建议我用什么来代替它?太好了。没问题。如果你需要更多的帮助,请告诉我。太好了。没问题。如果你需要更多的帮助,请告诉我。太好了。没问题。如果你需要更多的帮助,请告诉我。太好了。没问题。如果你需要更多的帮助,请告诉我。