0

"제품"클래스의 페이지에 여러 요소가 있습니다. 나는 각각에 이벤트 핸들러를 붙이고 싶다. 그래서 호버 위에 툴팁이 보인다. 다음 코드는 크롬, 파이어 폭스, 사파리와 IE8 +에서 잘 작동,하지만 IE7됩니다 : 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); 

나는 각 요소 위에 마우스를 올려 처음으로, 그것은 잘 작동합니다. 하지만 두 번째로 요소 위로 마우스를 이동하면 '콘텐츠'변수가 비어 있습니다. showTooltip() 함수를 간단한 경고 (content.innerHTML)로 바꾸면 처음에는 적절한 HTML로 경고하고 이후에는 경고가 비어 있습니다.

또한 콘텐츠를 개체로 저장하려고 시도하고 bindAsEventListener를 사용했지만 동일한 결과가 나타납니다.

IE7에서 콘텐츠가 계속 유지되지 않는 원인에 대해 의견이있는 사람은 누구입니까?

감사

답변

1

대신 "콘텐츠"를 DOM에 추가하고 코드의 설명이 아닌 툴팁의 요소에 대한 참조를 전달하려고합니다.

+0

좋은 생각. 나는 그걸 생각해야한다. 그러나 때때로 당신은 단지 외부 의견을 필요로한다. :) –

0

로 마우스하고있는 hideTooltip() 함수 무엇 @Josh 라이언. 기능이 손실되는 경우 디버깅을 시작하면서 거기에서 시작합니다.

편집 : 죄송합니다. 다른 브라우저에서 작동한다고했지만, 여전히 mouseout 기능을 확인하는 것이 도움이 될 것입니다.

+0

모두 숨기기 툴팁은 tooltipElement.hide()입니다. –