const findClosestParent = (startElement, fn) => {
const parent = startElement.parentElement;
if (!parent) return undefined;
return fn(parent) ? parent : findClosestParent(parent, fn);
};
$document.on('click', event => {
let target = event.target;
if (findClosestParent(target, parent => parent.classList.contains('.calendar')) {
// do some things
}
});
Я пытаюсь найти, находится ли элемент внутри другого элемента. Я не могу сделать это с ближайшим в Inte rnet Explorer 11. Поэтому я пошел по пути создания рекурсивного поиска по функции дерева DOM. Однако я также не могу просто получить родительский элемент целевого элемента события в Inte rnet Explorer 11 в angular js контроллере, используя jQuery s event.target property
. Этот фрагмент кода не работает, потому что startElement.parentElement
в findClosestParent
всегда равно нулю независимо от того, что я нажимаю. Кроме того, startElement.parentNode
является нулевым. event.currentTarget.parentNode
равно нулю. Я перепробовал так много вещей. Ничего не работает Еще одна вещь, которую я попробовал, я не могу просто добавить идентификатор в div, которые я пытаюсь выбрать, и использовать чистый ванильный js getElementById
селектор запросов, потому что эти элементы абстрагируются в сторонней библиотеке. Мне бы очень хотелось иметь возможность использовать цель события или что-то подобное, чтобы получить элемент dang в IE11.
Я думаю, что это сводится к тому, что, согласно https://developer.mozilla.org/en-US/docs/Web/API/Node/parentElement, для IE, parentElement
«Поддерживается только на Element
». Вот что он говорит ... что это означает, что я думаю, что inte rnet explorer не считает event.target
"Element
".