2014-09-15 5 views
0

텍스트 영역에 포커스가있을 때만 사용할 수있는 일부 BB 코드 컨트롤을 사용하여 HTML 텍스트 영역을 향상 시키려고합니다. 원하는 동작은 다음과 같습니다jQuery 및 이벤트 버블 링 : 원하지 않는 이벤트 중지

사진 1 - 포커스 이벤트 전 : before focus event http://gaedekenet.de/tmp/beforeInit.jpg

은 그림 2 - 포커스 이벤트 (올바른 동작) 후 :correct behaviour http://gaedekenet.de/tmp/afterInit.jpg

위의 올바른 행동입니다 텍스트 영역의 LOWER 부분을 클릭하면됩니다. 버튼이 나타나지 않습니다. 사용자가 텍스트 영역의 왼쪽 상단 부분에 클릭 할 때마다 그러나, 다음과 같은 상황이 발생합니다

그림 3 - 포커스 이벤트 후 (잘못된 동작) : erroneous behaviour http://gaedekenet.de/tmp/afterInit_error.jpg

그것은 나에게 것뿐만 아니라 "클릭", "마우스 다운", "마우스 업"등

"포커스"이벤트가 트리거됩니다. 어떤 이벤트도 BB 코드 플러그인 (타사 플러그인 임)에 도달 할 수 없습니다. 현재 접근 방식은 다음과 같습니다.

$(#myText) 
    .focus(function(e){ 
     e.stopPropagation().stopImmediatePropagation(); 
     // initialize and show the bb code buttons here 
    }) 
    .click(function(e){ 
     e.stopPropagation().stopImmediatePropagation(); 
    }) 
    .mouseup(function(e){ 
     e.stopPropagation().stopImmediatePropagation(); 
    }) 
    .mousedown(function(e){ 
     e.stopPropagation().stopImmediatePropagation(); 
    }); 

무엇이 누락 되었습니까?

+0

당신이 시도 했 e.preventDefault를 사용 방지하기 위해 전파를 정지()? –

답변

1

e.stopPropagation() 기본 이벤트가

e.preventDefault() 

전체의 jQuery 이벤트 API 문서 here

+0

Thanx, e.preventDefault()가 내 솔루션의 핵심으로 밝혀졌습니다. 그러나 위의 텍스트 영역의 거대한 배열에서 포커스 및 클릭 이벤트를 완벽하게 처리하려면 서로 의존하는 다소 복잡한 이벤트 리스너 집합을 만들어야했습니다. 내가 생각해 낸 해결책은 6 시간이 걸렸고 하루를 망쳤습니다. 그러나 그것은 완료되었습니다 :-) – Eddie