Это плохая практика делать $ ("*"). Live ("mouseover", someFun) в jQuery? - PullRequest
2 голосов
/ 06 октября 2009

Иногда бывает много событий наведения мыши, и селектор $ ("*") может быть дорогим. Замедлит ли это мои страницы для сканирования на медленных машинах под управлением IE6?

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

Ответы [ 2 ]

4 голосов
/ 06 октября 2009

Просто сделай $('body'). Это назначит отдельный обработчик элементу <body>, и каждый элемент-потомок (то есть каждый элемент на странице) будет пузыриться при наведении мыши на эту точку. Все, что вам нужно сделать внутри обработчика, это проверить источник события, чтобы найти точный элемент:

$('body').mouseover(function(e) {
    var sender = e.target;
    //sender is the element who was moused over
});

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

3 голосов
/ 06 октября 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...