Jquery каждый клик вызывает метод для всех тегов одновременно - PullRequest
0 голосов
/ 06 мая 2018

Я использую текстовый редактор Quill и пытаюсь вставить внутренние ссылки, поэтому каждый раз, когда я нажимаю на них, я прокручиваю до выбранной позиции.

У меня есть селектор jquery, который находит все эти ссылки и связывает их с событием "click".

Моя проблема заключается в том, что каждый раз, когда я нажимаю на одну из них, функция вызывается для всех них одна за другой.

почему это происходит? почему я не вижу, чтобы эта функция вызывалась только один раз для этого клика?

addLink() {
        const quill = this.reactQuillRef.getEditor();
        var range = quill.getSelection();
        var text = quill.getText(range.index, range.length);
        let position = range.index;
        quill.deleteText(range.index, range.length);
        quill.clipboard.dangerouslyPasteHTML(position, '<a href="' + position + '" target="_blank"><b>' + text + '</b></a>');
            let action = this.scrollTo
            $("a[target='_blank']").each(function () {
                var setTo = parseInt($(this).attr('href'));               
                $(this).bind("click", setTo, action);
            });
        }
    
    // if I have 3 links in my DOM and click one of them this will be invoked 3 times
    scrollTo(selectedTreeNode) {
        let scrollTo = selectedTreeNode.data 
        const quillRef = this.reactQuillRef.getEditor();
        quillRef.setSelection(scrollTo, 0);
    }

UPDATE

Причина, по которой это произошло, состояла в том, что я не знал или принимал во внимание, что каждая привязка индивидуальна. Каждый раз, когда я вызываю Query.each, я привязываю новое действие щелчка к одному и тому же якору, поэтому, если у меня было 3 якоря, первый вызывался 3 раза, второй - 2 раза, а последний - 1 раз.

спасибо

...