2014-04-15 3 views
0

JQuery/javascript/Knockout.js에 문제가 있습니다.이벤트 버블 링 또는 루핑 콜백?

이벤트는 호출 될 때마다 점진적으로 반복됩니다.

예를 들어 경고가있는 클릭 이벤트와 같습니다.

한 번 클릭하면 경고가 표시됩니다.

두 번 클릭하면 두 번 경고합니다.

세 번째로 계속 진행되며, 반복 횟수만큼 반복됩니다.

불완전한 회사 프로젝트이기 때문에 불가능한 전체 프로그램을 제공하지 않으면 코드를 붙여 넣을 수 없으므로 여기서는 매우 위험합니다.

제공 할 코드가 없으면 대단히 죄송합니다. 아이디어/해답/가능한 솔루션 만 있으면됩니다.

이 문제는 무엇이라고합니까? 이벤트 버블 링입니까?

제 질문은 모든 이벤트를 한 번 호출 한 후 중지 할 수 있습니까? 나는 루프 문이 전혀 없다, 내가 가지고있는 것은 일부 기능과 .on('click'... 이벤트이다.

답변

0

나는 내 질문에 대한 대답을 마침내 발견했다.

.on 이벤트는 클릭 할 때마다 스태킹되므로 이벤트를 두 번 클릭하면 이벤트가 두 번 발생합니다. 그런 다음 .off()를 .on ('click', functionName) 앞에 삽입해야했습니다. 이런 식으로하게

: 모든 이벤트 스택을 정리한다

$('testBtn').off().on('click', functionName);

.

0

클릭 이벤트를 바인딩 할 때 자주 발생하는 한 가지 원인은 부모 요소와 자식 요소 모두에서 공통 핸들러를 사용하게 만드는 것입니다.

예 :

아이가 핸들러, 해봐요을 클릭
<div id="parent" data-bind="click: doSomething"> 
    <a data-bind="click: doSomething">Clickable</a> 
</div> 

가 한 번 트리거됩니다 다음 부모 클릭 핸들러, 즉 다시 가 해봐요 또한 트리거됩니다 호출합니다.

이와 같은 시나리오에서 이벤트 전파를 방지하려면 내부 요소에서 clickBubble 바인딩을 false로 설정할 수 있습니다.

예 :

here 바인딩 클릭의 모든 세부 사항에 대한
<div id="parent" data-bind="click: doSomething"> 
    <a data-bind="click: doSomething, clickBubble: false">Clickable</a> 
</div> 

더.