Как отменить привязку в рамках события связывания - PullRequest
0 голосов
/ 25 июня 2019

Я разрабатываю функцию в расширении Chrome, которая позволяет пользователю наводить курсор и обнаруживать любой элемент на странице. Кнопка выбора в правом верхнем углу страницы активирует функцию. Всякий раз, когда на элемент нажимается, поле ввода рядом с кнопкой заполняется внутренним HTML этого элемента. После щелчка выбор должен прекратиться, и функция больше не будет распознавать щелчок. Все работает нормально, но я не могу отменить привязку события нажатия. Что-то не так с моим кодом? Пожалуйста, дайте мне знать

content.js

window.onload = () => {

    var highlight = function (event){
        if(!$(event.target).is("#home_container *")){
            event.target.style.backgroundColor = "rgba(121, 204, 255, 0.4)";
        }
    }
    var remove = function (event){
        if(!$(event.target).is("#home_container *")){
            event.target.style.backgroundColor = "";
        }
    }

    var disableLinks = function (event){
        event.preventDefault();
    }

    var highlightProcess = function(event) {
        $('a').bind("click", disableLinks);
        $(document).bind("mouseover", highlight);
        $(document).bind("mouseout", remove);
        $(document).bind("click", (elem) => {
            if(!$(elem.target).is("#home_container *")){
                $("#input_box").val(elem.target.innerHTML);
                remove(elem);
                $(document).unbind("mouseover", highlight); //<-- works
                $(document).unbind("mouseout", remove); //<-- works
                $('a').unbind("click", disableLinks); //<-- works
                $(this).unbind("click"); //<-- this does not work
            }
        });
    }
    document.getElementById('st_select_element_button').addEventListener("click", highlightProcess);
}

Ответы [ 2 ]

1 голос
/ 25 июня 2019

Вы можете изменить highlightProcess на функцию стрелки, а затем «this» будет ссылаться на документ:

var highlightProcess = (event) => {...}
0 голосов
/ 25 июня 2019

Решено

изменено

$(this).unbind("click");

на

$(document).unbind("click");
...