2013-05-04 2 views
1

저는 새 웹 사이트의 그리드 레이아웃에서 작업하고 있습니다. PHP 코드 :다른 div에서 div를 가리키면 javascript가 "onmouseover"및 "onmouseout"을 트리거합니다.

echo"<div class='model_container_invisible' onMouseOver='fade(this, 0)' onMouseOut='fade(this, 1)'>"; 
      echo"<span class='model_title_wrapper'>"; 
       echo"<span class='model_title'>Ancient Dragon</span>"; 
       echo"<span class='model_designer'>designed by Kamiya Satoshi</span>"; 
      echo"</span>"; 
      echo"<img class='model_img' src='img/models/001.jpg' />"; 
echo"</div>"; 

이것은 그리드 요소를위한 것입니다. 이미지의 불투명도는 0.5이고, js 함수 fade()를 사용하여 요소를 가리킬 때 변경하고 싶습니다. 다른 사업부에 사업부에에서 내 마우스 포인터 이동 (model_titel하는 model_title_wrapper에서 말할 수) 때

function fade(elem, direction) 
{ 
/* if(elem.className == "model_container_invisible") 
    elem.className = "model_container_visible"; 
else 
    elem.className = "model_container_invisible"; */ 

var img = elem.getElementsByTagName("img")[0]; //das Bild 

if(direction == 0) //einblenden 
{ 
    alert("fadein, this: "+elem); 
    img.style.opacity = 0.5; 

    var aktiv = window.setInterval(function() { 
     img.style.opacity = String(Number(img.style.opacity) + .05); 
     if(Number(img.style.opacity) >= 1.0) { 
      window.clearInterval(aktiv);  

     } 
    }, 8); 
} 
else //ausblenden 
{ 
    alert("fadeout, this: "+elem); 
    img.style.opacity = 1; 

    var aktiv = window.setInterval(function() { 
     img.style.opacity = String(Number(img.style.opacity) - .05); 
     if(Number(img.style.opacity) <= 0.5) { 
      window.clearInterval(aktiv);  

     } 
    }, 16); 
} 
} 

하지만, 함수가 다시 호출 : 여기의 코드입니다. 나는 그것을 얻지 않는다!

도와 주시겠습니까? 감사!

답변

1

onmouseover 대신 onmouseenter을 사용하면 자식 요소에서 마우스를 가져갈 때 나중에 이벤트가 발생하지만 onmouseenter은 이벤트가 터지지 않습니다.

http://www.quirksmode.org/js/events_mouse.html#mouseenter

+0

안녕하세요 넬슨, 답변에 대한 감사합니다. 그것은 일했다! –

0

이 때문에 기본 자바 스크립트 이벤트 버블 링 개념의 발생 :

당신이 사용해야하는 onmouseenter/onmouseleave 이벤트에 대한 정보를 참조하십시오. 요소 (이 경우 model_title과 같은)에서 일부 이벤트가 발생하면 이벤트는 상위 문서 요소까지 버블 링됩니다.

부모 div (model_container_invisible)에는 하나의 이벤트 핸들러가 있기 때문에 이벤트 내부의 정확한 위치와 관계없이 실행됩니다.

따라서이 문제를 방지하려면 eventSource가 실제로 model_container_invisible인지 확인하고 필요한 로직을 수행해야합니다. 당신이 도움이 될

다음 링크 : http://www.javascripter.net/faq/eventtargetsrcelement.htm

+0

hi sampath 테스트를 거쳤습니다. 감사! 하지만 지금은 nelsons 방법을 사용하고 있습니다. –

관련 문제