[英]Function still running after return
我使用RobotJS在我的Electron應用程序中添加了一個顏色選擇器,當用戶單擊按鈕時, .click .click()
會觸發我的功能,該功能專注於起作用的輸入(隱藏opacity: 0; height: 0px; width: 0px;
)作為用戶單擊( .blur()
)以獲取光標位置顏色時的代理。 然后,將該顏色放入另一個輸入字段中並返回。 但是,如果用戶隨后單擊返回的輸入字段然后單擊退出,則.blur()
仍會觸發。 為什么會這樣,我該如何預防呢?
<input class="clickProxy" style="opacity: 0; height: 0px; width: 0px;" />
$('.color_picker').click(function(){
getColorAtPointer();
});
function getColorAtPointer(){
$('input[name="colorSample"]').focus();
$('input[name="colorSample"]').blur(function(){
var mouse = robot.getMousePos();
$('input[name="colorSample"]').val('#'+robot.getPixelColor(mouse.x, mouse.y));
return;
});
}
謝謝!
用戶單擊顏色選擇器后,將綁定模糊事件。 您永遠不會取消綁定它,因此它將在用戶每次離開colorSample元素時繼續觸發。 您有幾種選擇。
我認為最好的方法是使用.one而不是模糊效果,因此事件僅觸發一次。
例如:
function getColorAtPointer(){
$('input[name="colorSample"]').focus();
$('input[name="colorSample"]').one("blur", function(){
var mouse = robot.getMousePos();
$('input[name="colorSample"]').val('#'+robot.getPixelColor(mouse.x, mouse.y));
return;
});
}
或者,您可以為模糊事件(例如.on("blur.color-picked")
命名空間,然后在模糊事件處理程序內部取消綁定事件(例如.off("blur.color-picked")
還值得注意的是,您不必在點擊事件中使用匿名函數,您可以直接傳遞該函數
$('.color_picker').click(getColorAtPointer);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.