Состояние цикла - огромное улучшение, по сравнению с каждым - запустите какой-нибудь тест, и вы увидите :) .each / filter / map и т. Д., Возможно, самый медленный аспект jquery. Проведите некоторое тестирование по этой теме, и вы увидите, что я провел массу тестов производительности в браузерах от ie7 и выше, включая chrome, safari, opera & firefox, и разница между использованием обычных циклов и циклов на основе функций просто ошеломляет ... но эй , совет всегда можно оставить без внимания, ведь он бесплатный :)

ще пытаюсь ответитьэтот вопроси я думаю, что наконец-то нашел решение, но оно работает слишком медленно.

var $div = $('<div>')
    .css({ 'border': '1px solid red', 'position': 'absolute', 'z-index': '65535' })
    .appendTo('body');

$('body *').live('mousemove', function(e) {
    var topElement = null;
    $('body *').each(function() {
        if(this == $div[0]) return true;
        var $elem = $(this);
        var pos = $elem.offset();
        var width = $elem.width();
        var height = $elem.height();
        if(e.pageX > pos.left && e.pageY > pos.top
            && e.pageX < (pos.left + width) && e.pageY < (pos.top + height)) {
            var zIndex = document.defaultView.getComputedStyle(this, null).getPropertyValue('z-index');
            if(zIndex == 'auto') zIndex = $elem.parents().length;
            if(topElement == null || zIndex > topElement.zIndex) {
                topElement = {
                    'node': $elem,
                    'zIndex': zIndex
                };
            }

        }
    });
    if(topElement != null ) {
        var $elem = topElement.node;
        $div.offset($elem.offset()).width($elem.width()).height($elem.height());
    }
});

Он в основном перебирает все элементы на странице и находит самый верхний элемент под курсором.

Есть ли какой-нибудь способ, которым я мог бы использовать квад-дерево или что-то и сегментировать страницу, чтобы цикл работал быстрее?

Ответы на вопрос(2)

Ваш ответ на вопрос