2009-06-24 5 views
1

내가, 클래스 "no_inspect"가있는 것을 제외하고 페이지에있는 모든 요소에 이벤트를 통해 내가 모든 페이지 요소를로드 한 후이 이벤트를 추가 할특정 클래스를 제외한 모든 요소에 이벤트를 추가하는 방법은 무엇입니까?

을 마우스를 추가하려면, 나는 그런 식으로 작성했습니다 :

$('*:not(.no_inspect)').mouseover(MouseOverEvent); 

하지만 작동하지 않는 이음새가 없습니다.

UPDATE 작동하지 않는 수단 :

이벤트 페이지에있는 모든 요소에 부착되어 "no_inspect 클래스가 여부가"내가 원하는 행동하지 않은.

UPDATE MouseOverEvent 코드 :

function DIOnMouseOver(evt) { 
    element = evt.target; 

    // set the border around the element 
    element.style.borderWidth = '2px'; 
    element.style.borderStyle = 'solid'; 
    element.style.borderColor = '#f00'; 
} 
+0

"작동하지 않음"이란 무엇을 의미합니까? 오류가 있습니까? 이벤트가 단순히 발동하지 않습니까? 이벤트가 잘못된 요소에 할당됩니까? –

답변

2

mouseover 이벤트 거품을 시도 할 수 있습니다. 대신 mouseenter을 사용해보십시오.

또한 스타일을 적용하는 이유는 무엇입니까 evt.target? 왜 '이'가 아닌가?

(코멘트에) Matchu에서 언급 한 바와 같이
function DIOnMouseOver(evt) { 
    $(this).css({ 
     border: '2px solid #f00' 
    }); 
} 

는 전파를 방지하는 또 다른 방법은 이벤트 핸들러 내에서 event.stopPropagation()를 호출하는 것입니다.

+1

또는 함수 끝 부분에 tack evt.stopPropagation()을 추가하십시오. – Matchu

+0

아주 이상한데 mouseover 대신 mouseenter로 바꿨을 때 아주 잘 작동했습니다. 마우스 오버가 작동하지 않는 이유를 알고 있습니까? 마우스 오버가 내 경우에 올바른 이벤트라고 생각했습니다. –

0

당신이 작동합니다 게시 코드, 당신은 마우스 오버 이벤트는 마우스를 올려 놓으면됩니다 하나를 포장하는 요소에 대한 해고되지 않았는지입니까?

JQuery의 최신 버전을 사용하고 있습니까? 이전 버전에는 not selector에서 일종의 클래스 버그가 있다는 것을 알고 있습니다.

당신은

$('*').not('.no_inspect').mouseover(MouseOverEvent); 
+0

질문에 mouseover 이벤트 코드를 추가했습니다. –

관련 문제