2009-10-05 7 views
0

"onmouse over"는 모두 요소에 바인딩되어 있습니다. 마우스가 요소 위에있을 때 가장 가까운 관련 요소에 빨간색 경계선을 그립니다 (예제에서는 aardvark을 시도하십시오). 당신은 "IMG"는 "P"내부에 있음을 알 수jQuery와 함께 예기치 않은 "onmouseover"동작이 발생했습니다.

<p> 
<img height="333" width="250" title="Image par hyperbolic pants explosion sous licence CC - http://www.flickr.com/photos/[email protected]/2716444681/" class="illustred" src="context-selector-test_files/rha_20090929_antivirus.jpg" /> 
Ah là là... ces abrutis qui continuent à refuser d'installer des antivirus parce que " 
<em> 
Je ne télécharge pas ! 
</em> 
" ou " 
<em> 
Je ne vais que sur des sites de confiance. 
</em> 
</p> 

:

은 내가 follwing을 코드가 있습니다.

예상되는 동작은 "P"를 넘으면 테두리가 생기고 "IMG"로 갈 때 테두리가 "IMG"로 이동한다는 것입니다.

그렇지 않습니다.

CSS를 사용하지 않기 때문에 문제는 CSS가 아니지만 요소 주위에 "절대"위치에 4 ​​개의 테두리를 시뮬레이트하기 위해 4 개의 div가 있기 때문에 문제가되지 않습니다. 이것은 다음에 무엇을 위해 필수적입니다.

"IMG", "mouseover"가 실제로 트리거되지만, "imm"뒤에 "mouse over"가 "P"에서 다시 트리거되면 문제가 발생합니다. 나는 "P -> IMG"를 이해할 것이다. 그러나 "IMG -> P"는 나를 괴롭힌다. 그리고 왜, 한 줄에 2 마우스 오버? 나는 마우스를 움직이지 않았다.

이제 내가 무엇을 놓치고 있습니까?

사양 :

  • HTML 4;
  • css2;
  • jquery 1.3;
  • firefox 3.5;
  • 우분투 9.04;
  • 커피 1.50 (l).
+0

ImageShack이 이미지를 삭제하고이를 광고로 바꿨 기 때문에 귀하의 게시물에서 이미지를 삭제해야했습니다. 자세한 내용은 http://meta.stackexchange.com/q/263771/215468을 참조하십시오. 가능한 경우 다시 업로드하는 것이 좋습니다. 감사! – Undo

답변

1

mouseover 처리기에서 이벤트 전파를 중지하십시오.

$('selector').mouseover(function(e) { 
    ... 
    e.stopPropagation(); 
}); 

또한 hover() 방법 또는 hoverIntent() 플러그인을 사용하여 생각 할 수 있습니다. 후자는 이벤트 처리기가 호출되기 전에 시간 초과 대기를 적용하여 마우스를 페이지 전체로 끌기 만하면 깜박임을 줄일 수 있습니다.

+0

e.stopPropagagtion()을 사용하는 것이 더 좋습니다. –

1

이벤트 버블 링에 의해 캐치 아웃되고 있습니다.

mouseover 대신 mouseenter()을 사용하십시오.

+0

나는 실제로 "mouseenter"를 사용하지만 어쨌든 나는 어리 석다. –

0

좋아, 나 자신을 죽이고 싶지만 여기는 응답자이다.

나는 이벤트 전송을 멈추는 것을 깜빡했다. "onmouseover"가 트리거 될 때 호출되는 콜백 함수는 물론 작업 완료 여부를 반환해야합니다. 이벤트를 버블 링하지 않으려면 "false"를 반환합니다.

이제 피사체에 3 시간을 보낸 후 실례 해 주시겠습니까? 건배.

추신 : 나는 커뮤니티 위키에 내 모든 권한을 남겼다.

관련 문제