2010-05-16 4 views
3

CSS는 "호버"선택은 요소에 임시 스타일을 시만 적용, 그것은 확정되지 않습니다 :임시 onMouseover와

var elem = document.getElementsByTagName ("div")[0]; 

elem.onmouseover = function() { 
this.style.backgroundColor = "red"; 
} 

elem.onmouseout = function() { 
this.style.backgroundColor = "transparent"; 
} 

더 좋은 방법이 있습니까? 이런 식으로 뭔가 :

document.getElementsByTagName ("div")[0].ontemporarymouseover = function() { // LoL 
this.style.backgroundColor = "red"; 
} 

감사

이의 동작은 당신이 당신의 두 번째 예에서와 마찬가지로, mouseovermouseout DOM events받는 듣고 처리 할 수있는 자바 스크립트에서
+1

이 문맥에서 "결정적이지 않은"것은 무엇을 의미합니까? – Quentin

+2

함수'getElementByTagName'이 존재하지 않습니다. 'getElementsByTagName' 만 있습니다. 당신이 가지고있는 문제의 이유가 틀림 없습니다. – 0x2D9A3

+0

제 이전 의견에 더하여 제 직감은 캐스케이드에 대한 이해 부족을 해킹하기 위해 JavaScript를 사용하려고한다고 말합니다 : http://www.w3.org/TR/CSS21/cascade.html#specificity – Quentin

답변

0

// jQuery를 '임시 MouseEvent는'

$("element").bind 
({ 
    mouseover: 
     function() 
     { 
     }, 
    mouseout: 
     function() 
     { 
     } 
}); 

$("element").unbind('mouseover mouseout'); 

나는 이것이 당신이 필요위한 좋은 방법입니다 바랍니다.

+0

JQuery를 사용하지 않지만 바인딩이 대답입니다. 감사합니다. :) – Caio

1

. 그러나 첫 번째 예제에서와 같이 CSS를 사용하여 호버링 스타일을 처리하는 것이 좋습니다.

+0

Javascript를 사용하여 "hover"클래스를 설정 (및 설정 해제) 한 다음 CSS에 스타일을 적용합니다. – Pointy

+0

@Pointy : 사실 ... 나는 "떨어져서 ..."라고 말했습니다 : –

0

나는 당신이 jQuery를 자바 스크립트 프레임 워크를 사용하는 경우, 당신이 할 수 있다고 생각합니다 :

$('div:first').hover(function(){ 
    $(this).css('background-color','red'); 
},function(){ 
    $(this).css('background-color','white'); 
}); 
+0

아니요, 배경색을 '빨강'onmouseover 및 onmouseout으로 설정합니다. – Quentin

+0

handlerOut 객체를 추가하여 코드를 수정했습니다. –

2

아니오, 그 자체로 사라 스타일을 적용 할 수있는 방법이 없습니다.

실제로 CSS에는 하나의 정의 만 있지만 실제로는 onmouseoveronmouseout을 트리거하는 두 가지 상태 변경 사항에 해당합니다. 포인터가 요소에 들어가면 :hover 의사 클래스가 추가되어 CSS 규칙이 적용됩니다. 포인터가 요소를 벗어나면 pseudo 클래스 인 :hover이 제거되어 CSS 규칙이 더 이상 적용되지 않습니다.