2011-05-13 8 views
0

내선을 사용하는 Im 4. 컨테이너 안에 버튼이 있습니다. 컨테이너에 mouseover, mouseout 및 click 이벤트를 받길 원하지만이 버튼으로 mouseover 및 mouseout 이벤트 핸들러가 컨테이너에서 두 번 호출됩니다. 하위 버튼의 이벤트를 어떻게 비활성화 할 수 있습니까?자식 이벤트 사용 안 함

답변

2

4.0의 새로운 bubbleEvents 동작을 실행하고 있다고 생각합니다. 이제 구성 요소는 일부 이벤트를 상위 컨테이너로 전파합니다. 이것은 코드에서 DOM 이벤트 버블 링과 관계없이 구성 요소 계층까지 발생합니다.

http://dev.sencha.com/deploy/ext-4.0.0/docs/api/Ext.container.Container.html

가장 좋은 수정은 당신이 그것을 처리하고 나면 간단하게 이벤트를 중지하는 것입니다. 모든 버블 링, 구성 요소 또는 DOM을 막아야합니다. 일반적으로 클릭 이벤트에 대해이 작업을 수행하여 클릭에 대한 응답으로 단 하나의 일이 발생하는지 확인하는 것이 좋지만 마우스 오버 및 마우스 아웃에 대해서는 적절하지 않습니다.

panel.on('click', function(e) { 
    e.stopEvent(); 
    // do your stuff 
}); 

시도해 볼 수있는 또 다른 해결 방법은 버튼의 bubbleEvents를 지우는 것입니다.

또 다른

는, 아마도 덜 강력한 수정 이벤트 버퍼링을 설정하는 것입니다 :

el.on('click', this.onClick, this, {buffer: 10}); 

버퍼링 하나에 구성 가능한 시간 창에서 중복 된 이벤트를 축소 그것은 UI 이벤트를 신속하게 불을 부드럽게 또는 중복에 대한 유용하지만 버블 링으로 어떻게 움직이는 지 모르겠습니다.

+2

결국 나는 mouseenter와 mouseleave 이벤트를 찾고 있음을 발견했습니다. – chris

2
{ 
... 
preventDefault: true, 
... 
}