Javascript 根据变量更改鼠标事件

Javascript 根据变量更改鼠标事件,javascript,jquery,Javascript,Jquery,我打赌这很简单,我会尽力解释清楚: 我试图建立一个画廊,以显示不同的过渡和揭示(使叠加的div过渡看不见,例如),我希望有一个按钮,用户可以点击体验相同的过渡与悬停和点击 为了实现这一点,我简单地创建了一个名为toggleButton的新变量,将其初始化为0,并做了一个条件语句,表示如果变量为0,则转换应在悬停状态下工作,如果toggleButton为1,则转换将通过单击来工作。 每次按下更改按钮时,我都会在控制台上记录变量更改,它工作正常,没有错误,但我无法实现我想要的,转换从未更改,它始终保

我打赌这很简单,我会尽力解释清楚: 我试图建立一个画廊,以显示不同的过渡和揭示(使叠加的div过渡看不见,例如),我希望有一个按钮,用户可以点击体验相同的过渡与悬停和点击

为了实现这一点,我简单地创建了一个名为
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)已弃用,应避免在新代码中使用它。我不知道,谢谢!你建议我用什么来代替它?太好了。没问题。如果你需要更多的帮助,请告诉我。太好了。没问题。如果你需要更多的帮助,请告诉我。太好了。没问题。如果你需要更多的帮助,请告诉我。太好了。没问题。如果你需要更多的帮助,请告诉我。