Метод остановки jquery, вызывающий переполнение стека в ie6 - PullRequest
0 голосов
/ 21 июня 2010

У меня есть шесть опций меню в моем веб-приложении, и когда пользователь наводит указатель мыши на ссылку (ul> li> a), я переключаю изображение, чтобы показать релевантную для контекста фотографию, и затемняю изображение.Тем не менее, я заметил, что когда пользователь быстро перемещал свою мышь между ссылками, очередь не работала должным образом, и пользователь часто зависал над ссылкой и отображал старое изображение с предыдущего наведения.После небольшого прочтения оказалось правильным использовать метод stop (), но когда я пытаюсь реализовать его, ie6 сообщает о переполнении стека.

Вот мой старый код (который имеетпроблема старого образа):

if(webImage != 'img/template/slide_web.png') {
                        $('#slide img').fadeOut(function() {
                            $(this).load(function() {$(this).fadeIn(); });
                            $(this).attr('src','img/template/slide_web.png');
                        });

А вот мой новый код (который решает старую проблему, но вызывает переполнение стека в ie6):

if(webImage != 'img/template/slide_web.png') {
                        $('#slide img').stop(true, true).fadeOut(function() {
                            $(this).load(function() {$(this).stop(true, true).fadeIn(); });
                            $(this).attr('src','img/template/slide_web.png');
                        });

Я реализуюметод stop () неверно?Или есть другой способ избежать потери очереди jQuery?

1 Ответ

0 голосов
/ 21 июня 2010

Проблема в этой строке:

$(this).load(function() {$(this).stop(true, true).fadeIn(); });

Вы связываете новый .load() обработчик (хотя и с той же функцией) каждый каждый раз, когда вы исчезаете, поэтому вам нужно либо связать его один раз, вне эта область, или .unbind() это, как это:

$(this).unbind('load').load(function() {$(this).stop(true, true).fadeIn(); });

Без этого он пытается запустить эти обработчики нагрузки одновременно, что-то, что он не может обработать, эффективно, он выполняет .stop(true, true).fadeIn() много раз подряд.

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