簡體   English   中英

返回后功能仍在運行

[英]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.

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