簡體   English   中英

激活后如何停用功能

[英]How to deactivate a function after being activated

我可以在某個點擊事件上激活功能,但是我想在另一個div上執行點擊事件時停止該功能。

到目前為止,這是我的功能:

$('#text-tab').click(function() {
    writeOnCanvas(true);
});

$('#paint-tab, #sticker-tab, #done-tab').click(function() {
    writeOnCanvas(false);
});


function writeOnCanvas(bool) {
    if(bool) {
        $('body').click(function(e) {

            var clickedOnCanvas = e.target.id == "canvas" || $(e.target).parents('#canvas').length ? true : false;
            var alreadyTextArea = $('textarea.textarea_editable')[0];

            if(clickedOnCanvas) {
                if(alreadyTextArea) {
                    drawSentence();
                } else {
                    createTextArea(e);
                }
            }
        });

        $('#text > div > .color_choice').click(function() {
            var textColor = $(this).css('background-color');
            $('.textarea_editable').css('color', textColor);
        });

        $('#text > div > div:not(".color_choice")').click(function() {
            var textSize = $(this).css('font-size');
            $('.textarea_editable').css('font-size', textSize);
            $('canvas').attr('data-textSize', textSize);
        });
    } else {
        console.log('stop working');
        return false;
    }
}

如您所見,當我單擊#text-tab時,我將函數設置為“ true”,這可以正常工作。 但是,即使我單擊#paint-tab,#sticker-tab或什至#done-tab,該功能仍然可以正常工作,即使我看到console.log('stop working');。

編輯:

我嘗試放置一個全局變量,但是即使單擊#text-tab並將全局變量設置為true,我的函數仍無法工作。

var WRITEONCANVAS = false;
writeOnCanvas();

$('#text-tab').click(function() {
    WRITEONCANVAS = true;
});

$('#paint-tab, #sticker-tab, #done-tab').click(function() {
    WRITEONCANVAS = false;
});


function writeOnCanvas() {
    if(WRITEONCANVAS) {
        $('body').click(function(e) {

            var clickedOnCanvas = e.target.id == "canvas" || $(e.target).parents('#canvas').length ? true : false;
            var alreadyTextArea = $('textarea.textarea_editable')[0];

            if(clickedOnCanvas) {
                if(alreadyTextArea) {
                    drawSentence();
                } else {
                    createTextArea(e);
                }
            }
        });

        $('#text > div > .color_choice').click(function() {
            var textColor = $(this).css('background-color');
            $('.textarea_editable').css('color', textColor);
        });

        $('#text > div > div:not(".color_choice")').click(function() {
            var textSize = $(this).css('font-size');
            $('.textarea_editable').css('font-size', textSize);
            $('canvas').attr('data-textSize', textSize);
        });
    } else {
        return false;
    }
}

使用unbind刪除綁定功能,例如click

看到這個小提琴https://jsfiddle.net/jc4wzerf/1/

關鍵是:

$('.body-text').unbind( "click" )

在您的情況下,您將使用:

$('body').unbind( "click" )

編輯

我的錯, unbind在3.0中已棄用。 或者,您可以按照charlietfl的建議使用off

https://jsfiddle.net/jc4wzerf/3/

$('body').off( "click" )

要么

只需使用標志和單個處理程序

https://jsfiddle.net/jc4wzerf/2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM