Как запускать события программно в jQuery? - PullRequest
1 голос
/ 10 августа 2009

У меня есть страница, которая загружает деления закругленных углов. И на каждом div (включая все внутренние div, охватывающие этот div) я называю множество событий, связанных с ними. Теперь проблема, с которой я сталкиваюсь, это время загрузки. Есть ли у нас какой-либо подход, чтобы загружать скрипт для закругленных углов сначала в функцию «готово», а остальные события динамически, когда я наводю курсор мыши на основной блок? Любой подход, который уменьшает мое время загрузки, был бы очень полезен!

Пример:

$(function(){
    $('.inner').corner({
        tl: { radius: 6 },
        tr: { radius: 6 },
        bl: { radius: 6 },
        br: { radius: 6 }
    });

    // loadDivEvents() in this we call the rest of the events upon
    // mouseover or any other event without multiple calls

});

function loadDivEvents(){
    //this may have many events/ajax calls
}

Ответы [ 2 ]

0 голосов
/ 25 августа 2009

Я исправил эту проблему, используя изображения вместо div.Я нашел, что это лучший способ решить эту проблему.

0 голосов
/ 10 августа 2009

Какова на самом деле проблема со временем загрузки, если я могу спросить?

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

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

Например, если у меня есть 10 списков, и у каждого списка есть 10 элементов списка, и я хочу, чтобы любой из элементов списка становился зеленым при наведении - если у меня есть javascript, который определяет каждое из этих 100 событий отдельно, это может Налог на мои накладные расходы.

Но!

Если я перенесу привязку этих событий на ПОСЛЕ загрузки страницы, и это произойдет, когда я впервые наведу курсор мыши на основной элемент div (или окно, или на любое событие, которое почти всегда будет происходить дальше), тогда служебные данные просто пройдут на это событие. Страница загружена, но теперь она заморожена, пока обрабатываются события. Мой пользователь действительно раздражен, потому что он не может прокрутить вниз, и если проблема достаточно серьезна, он не может закрыть страницу или переключиться на другое окно. Он ожидал этого, когда страница загружалась вечно, теперь это просто случайное замораживание, которое всегда происходит, когда он заходит на вашу страницу.

Так что, если есть проблема с загрузкой страницы, лучшим решением может быть выяснить, есть ли избыточность или ненужные функции. В приведенном выше примере я мог бы просто сказать, что «когда ЛЮБЫЕ элементы списка перемещаются, они становятся фиолетовыми», это одна привязка против 100. Или, возможно, я допустил легкую ошибку, когда каждая из этих 100 привязок действительно что-то делает ( Например, проверьте значение элемента списка), которое действительно нужно выполнять ПОСЛЕ события, которое его вызывает, а не при загрузке страницы. Это было бы 100 киосков, которые я даже не собирался делать один раз во время загрузки страницы.

...