#javascript #event-handling #internet-explorer-7 #prototypejs #dom-events
#javascript #обработка событий #internet-explorer-7 #prototypejs #dom-события
Вопрос:
У меня есть куча элементов на странице с классом «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 при первом наведении курсора мыши на каждый элемент все работает нормально. Но при втором наведении курсора мыши на элемент переменная «content» пуста. Если я заменю свою showTooltip()
функцию простой alert(content.innerHTML)
, она в первый раз выдает правильный HTML-код, и каждый раз после этого предупреждение остается пустым.
Я также пытался сохранить содержимое как объект и использовать bindAsEventListener, но я получаю тот же результат.
У кого-нибудь есть какие-либо мысли о том, что заставляет контент не сохраняться в IE7?
Ответ №1:
Вместо этого я бы попробовал добавить «content» в DOM и передать ссылку на элемент для всплывающей подсказки, а не на элемент в коде.
Комментарии:
1. Хорошая мысль. Я должен был бы придумать это, но иногда вам просто нужно мнение извне 🙂
Ответ №2:
@Джош Райан, что функция hideTooltip () делает при наведении курсора мыши. Если это происходит, когда функциональность теряется, я бы начал там с моей отладки.
РЕДАКТИРОВАТЬ: Извините, теперь я вспоминаю, что вы сказали, что это работает в других браузерах, но все равно было бы полезно увидеть функцию mouseout.
Комментарии:
1. все, что делает hideTooltip, — это tooltipElement.hide();