[英]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" )
要么
只需使用標志和單個處理程序
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.