Я хочу использовать отличную живую функциональность jQuery для события mouseenter, но в настоящее время оно не поддерживается. Ниже мое первое решение, но оно не кажется оптимальным. Предложения? Улучшения?
// mouseenter emulation
jQuery('.selector').live('mouseover',function (e) {
// live sees all mouseover events within the selector
// only concerned about events where the selector is the target
if (this != e.target) return;
// examine relatedTarget's parents to see if target is a parent.
// if target is a parent, we're "leaving" not entering
var entering = true;
jQuery(e.relatedTarget).parents().each(function () {
if (this == e.target) {
entering = false;
return false; // found; stop searching
}
});
if (!entering) return;
/*
the rest of my code
*/
});
Я не могу проверить дочерние объекты цели для relatedTarget b / c. Нет простого способа получить все дочерние узлы.
Я не могу напрямую проверить, имеют ли родители цели relatedTarget как родителя и, таким образом, «вводят» цель, b / c для наведения мыши, это может быть вход от соседнего брата, а не родителя.
Это решение работает нормально. Я проверил это, и это кажется хорошим, но как я мог улучшить это? Это также страдает от того, как устроен DOM. Некоторая часть элементов селектора должна быть открыта, чтобы увидеть событие mouseover, но это редко бывает проблемой в примерах, на которых я это примеряю. Тем не менее, если есть способ гарантировать, что это будет видно, это было бы неплохо.
Наверное, я хочу знать, правильно ли я подхожу к этому, а если нет, то что лучше?