다른 리스너가 계속 진행하기 전에 이벤트 리스너가 이벤트 알림을받지 못하도록하는 방법을 찾고 있습니다. .자바 스크립트 이벤트 호출을 가로 채기 (항상 호출되는 이벤트 리스너를 먼저 추가 또는 대체)
초기 생각은 해당 이벤트 리스너를 바인드하여 해당 요소에 대한 다른 모든 이벤트 리스너를 트리거해야하는지 여부를 체인의 첫 번째 이벤트 리스너로 결정했습니다. 이 문제를 조사한 결과 가능한 것은 아닌 것 같습니다 (적어도 이벤트 리스너가 요소에 바인딩되어있는 방식을 조합하지 않아도됩니다).
내가 웹 페이지에있는 항목의 목록이 있습니다
은 일부 내용을 제공합니다. 사용자가 이러한 '항목 링크'중 하나를 클릭하면 페이지의 다른 영역에 양식이 채워지고 사용자는 항목의 속성 중 일부를 수정할 수 있습니다. 수정 된 항목의 속성을 유지하려면 사용자가 양식과 관련된 '업데이트'버튼을 클릭해야합니다.
내 목표는 사용자가 '업데이트'를 클릭하지 않고 항목의 속성을 수정했지만 다른 '항목 링크'를 클릭하면 방금 전에 변경 한 항목을 무시해도되는지 확인해야합니다.
나의 시도 솔루션 :
- 바인딩 true로 자바 스크립트 'hasChanges'필드를 설정하는 모든 양식 요소에 대한 변경 이벤트 리스너.
- 사용자가 변경 사항을 느슨하게 할 수있는 링크로 식별 할 수있는 클래스를 '항목 링크'에 추가하십시오.
- jQuery를 사용하여 'hasChanges'가 true 인 경우 확인 팝업을 표시하려면이 클래스가있는 모든 요소에 대해 click 및 keypress 이벤트 리스너를 바인딩하십시오.
- 변경 사항을 저장하려면 취소를 클릭하여 이벤트 전파를 중지하십시오. 이와
문제는 '항목 링크'요소가 이미 사용자가 항목의 속성을 수정할 수있는 페이지의 섹션을 업데이트 할 (자바) Spring AJAX decoration 클릭 이벤트 리스너를 가지고 있고,이 항상 전에 호출 될 것입니다 확인을 표시하는 이벤트 리스너 사실 나는 AJAX 장식 전에 진행할 확인을 위해 이벤트 리스너를 바인딩하여 페이지의 항목 속성 섹션 섹션이 업데이트되기 전에 확인이 표시되도록 보장 할 수 없다고 생각합니다.
누구에게 의견이 있습니까?
미리 감사드립니다.
업데이트 : 제안 된 솔루션은 true로 'caputre'플래그를 설정
했다. 그래서 이제 '항목 링크'에 이벤트 리스너를 추가 내 코드는 다음과 같습니다
$("." + linkClassName).each(function()
{
if ($.browser.msie)
{
this.setCapture(true);
this.attachEvent("onclick", _self.linksFunction);
}
else
{
this.addEventListener("click", _self.linksFunction, true);
}
});
그러나, 로깅 추가 갖는 '항목 링크'의 클릭에 호출 모든 기능 (FF의 콘솔), 내 function 'linksFunction'은 여전히 마지막으로 호출됩니다. 내가 잘못 했니?
감사합니다.
일반적으로 좋은 생각이지만, jQuery는 위상을 지정할 수 없으며 (실제로 악화되는) IE는 거품 단계 만 지원합니다. –
IE에서 작동하지 않는 제안은 대개 유용하지 않으므로 면책 조항을 추가해야합니다. –
아, 예 - IE뿐만 아니라 FF도 지원해야합니다. 어쨌든 고마워. –