2010-06-29 1 views
3

jQuery 플러그인을 처음 작성하고 jQuery가 다음에 연결된 이벤트를 실행하는 것을 막을 수있는 방법이 있는지 궁금합니다.jQuery가 다음 이벤트를 호출하지 못하도록하십시오.

예 : 유효성 검사 (함수가 false를 반환 IE) 통과하지 못한 경우

$(this).submit(function(){ 
    return $(this).do_some_validation(); 
} 

이 양식을 제출하지 않아야하지만, 연결된 다른 이벤트 핸들러가있는 경우에만 마지막 핸들러 반환 값이 수 양식 제출을 방지하십시오.

답변

6

사용 인 stopPropagation() 메소드 :

$(this).submit(function(e){ 
    e.stopPropagation(); 
    return $(this).do_some_validation(); 
} 
1

stopPropagation()은 대부분의 이벤트에서 작동하지만 위임 이벤트 인 .live().delegate()에서는 항상 작동하지 않을 수 있습니다.

return false;은 stopPropogation이 작동하지 않으면 어리석은 방법입니다. 처음으로.

0

나는 .live()이 기능을 사용 예, 두 문제

jQuery("a.entryTable, a.entryDelete").live("click", function(e) { 
    e.preventDefault(); 
    e.stopPropagation(); 

    // code 

    return false; 
}); 
5

또한 인 stopPropagation는 "실행 같은 요소에 다른 핸들러를 방지 할 수 없습니다"로, event.stopImmediatePropagation보고 할 수 있습니다를 (결코 stopPropagation을 사용하는 경우 동일한 양식의 핸들러를 계속 트리거해야 함).