IE7 теряет параметры в функции обработчика событий - prototype.js - PullRequest
0 голосов
/ 11 апреля 2011

У меня есть куча элементов на странице с классом «product». Я хочу прикрепить обработчик событий к каждому из них, поэтому при наведении указывается всплывающая подсказка. Следующий код работает нормально в Chrome, Firefox, Safari и IE8 +, но не в IE7:

    function init() {
        $$('.product').each(function(elm) {
            var id = elm.id;
            var name = new Element('div', {'class': 'title'}).update(products[id].name);
            var desc = new Element('div').update(products[id].desc);
            var content = new Element('div');
            content.appendChild(name);
            content.appendChild(desc);
            elm.observe('click', function() {showTooltip(content)});
            elm.observe('mouseover', function() {showTooltip(content)});
            elm.observe('mouseout', function() {hideTooltip()});
        });
    }

    document.observe('dom:loaded', init);

В IE7 при первом наведении курсора на каждый элемент он работает нормально. Но во второй раз при наведении курсора на элемент переменная содержимого пуста. Если я заменил свою функцию showTooltip () на простое оповещение (content.innerHTML), оно в первый раз выдаст предупреждение о правильном HTML, а оповещение будет пустым каждый раз после.

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

У кого-нибудь есть мысли о том, что заставляет контент не сохраняться в IE7?

Спасибо

Ответы [ 2 ]

1 голос
/ 11 апреля 2011

Я бы вместо этого попытался добавить «контент» в DOM и передать ссылку на элемент для всплывающей подсказки, а не на элемент в коде.

0 голосов
/ 11 апреля 2011

@ Джош Райан, что функция hideTooltip () делает при наведении мыши.Если это происходит, когда функциональность теряется, я бы начал там с отладки.

РЕДАКТИРОВАТЬ: Извините, теперь я помню, что вы сказали, что это работает в других браузерах, но было бы полезно увидеть мышиныйфункция.

...