Я использую текстовый редактор 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 раз.
спасибо