0

我在页面上有一大堆“产品”类的元素。我想附加一个事件处理程序给每一个,所以在悬停时显示一个工具提示。 下面的代码在Chrome,Firefox,Safari和IE8 +做工精细,但不是IE7:IE7在事件处理函数中丢失参数 - prototype.js

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.innerHTML)替换showTooltip()函数,它会首次警告正确的HTML,并且每次警报都是空的。

我也尝试将内容存储为对象,并使用bindAsEventListener,但我得到了相同的结果。

任何人有什么想法是什么导致内容不坚持在IE7?

感谢

回答

1

我会尝试将“content”附加到DOM中,并将引用传递给工具提示的元素,而不是代码中的元素。

+0

好想法。我应该想出来,但有时你只需要一个外部意见:) – 2011-04-11 16:53:31

0

@Josh瑞恩,什么是做鼠标移开时的hideTooltip()函数。如果这是功能丢失的时候,我会从我的调试开始。

编辑:对不起,我现在记得你说过这在其他浏览器中有效,但它仍然有助于查看mouseout功能。

+0

all hideTooltip does tooltipElement.hide(); – 2011-04-11 15:31:48

相关问题