Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击时从内存中删除函数_Javascript_Jquery_Html - Fatal编程技术网

Javascript 单击时从内存中删除函数

Javascript 单击时从内存中删除函数,javascript,jquery,html,Javascript,Jquery,Html,我会尽力解释我想做什么。我有一个调整大小的功能,当我按下一个按钮时就会运行。此函数用于在窗口外打开两列,并在调整窗口大小时将其保留。但是,我希望在稍后单击另一个div时重置该处理程序。只需从内存中删除或清除该函数,以避免调整大小。我读过一些帖子,但都能解决我的问题 我调整大小的功能是: function resizeColumnsOut(){ $(window).resize(function() { var widthLeft = $('.column-left').o

我会尽力解释我想做什么。我有一个调整大小的功能,当我按下一个按钮时就会运行。此函数用于在窗口外打开两列,并在调整窗口大小时将其保留。但是,我希望在稍后单击另一个div时重置该处理程序。只需从内存中删除或清除该函数,以避免调整大小。我读过一些帖子,但都能解决我的问题

我调整大小的功能是:

function resizeColumnsOut(){
    $(window).resize(function() {
        var widthLeft = $('.column-left').outerWidth()+100,
            widthRight = $('.column-right').outerWidth()+100,
            vph = $(window).height();
        $('.options').css({'height': vph + 'px', 'overflow': 'hidden'});
        $('.column-left').css(
            {'transform': 'translateX(-'+widthLeft+'px)', 
            'transition': 'all ease-out .6s'});
        $('.column-right').css(
            {'transform': 'translateX('+widthRight+'px)',
            'transition': 'all ease-out .6s'});
    }).resize();
 }

$('[data-menu="close"]').click(function(){
    $(this).hide();
    resizeColumnsOut();
});
单击时重置上一个功能的My function(我的功能):

function goAbout(){
    $('.about').click(function(){
      /* Events like .off() or .unbind() don't solve my problem since the resizeColumnsOut() function is already running */
    }
使用,而不是:

启用以下选项:

$(window).on('resize', function() { [code snipped] });
使用以下选项关闭:

$(window).off('resize');

您还需要中止或完成已开始的动画。当您说resizeColumnsOut函数仍在运行时,实际上是指它启动的CSS动画仍在运行:

是的,.off是正确的选择。如果您的意思是动画仍在运行,则在执行.off之后,您需要设置transform:none!非常重要,使用.css进行转换。@Spokey非常感谢,问题解决了。我需要时断时续地玩:那时我或多或少没有走错方向:非常感谢你抽出时间。