2009-12-01 6 views
1

각 페이지에로드 된 일부 자바 스크립트 파일에서 페이지 개체에 바인딩 된 함수가 있습니다.jquery 클릭 기능에 더 추가

이미 정의 된 이벤트 처리기에 더 많은 기능을 추가해야합니다. 여기에 제가 의미하는 바의 예가 있습니다.

현재 정의 된 클릭 이벤트가있는 객체는 화면에 나타나는 팝업 div를 닫습니다. 이 버튼을 클릭하면 (이 특정 페이지에서만) 페이지의 일부 요소를 재설정해야합니다.

그래서 나는 쉽게 click 이벤트의 바인딩을 해제하고 사용자 정의 이벤트를 리바 인딩 할 수 있지만 원래의 close 이벤트에서 많은 코드를 복사합니다.

악화가 더 심해지면 그냥 할 수는 있지만이 특수한 경우에 해당 코드를 복사하지 않는 것이 좋습니다.

현재 생성 된 이벤트에 코드를 추가하거나 정렬 할 수있는 방법이 있습니까?

감사 인사!

답변

0

클릭 이벤트를 함수로 설정합니다.

$(element).click(function(){//do stuff in here}); 

기능 비트에 원하는 기능을 추가 할 수 있습니다.

+0

@matpol 잘못된 것으로 편집 한 것 같습니다. Mea culpa –

1

단지 추가 된 기능

0

당신은 이벤트 위임을 사용할 수있는 다른 처리기를 바인딩합니다. Google은 자습서의 용어를 사용합니다.

기본적으로 부모 imutable 요소에 이벤트를 바인딩 한 다음 클릭 된 하위 작업을 결정합니다. 이렇게하면 자식 유형 x를 추가/삭제할 수 있습니다.

$("#parent_global_div").click(function (ev) { 
    var el = $(ev.target); 
    if(el === x){ 
     //do something 
    } 

});

0

"bind"를 사용할 수 있으며 click 메서드는 이러한 모든 바인딩 된 이벤트에 대해 "trigger"를 호출 할 수 있습니다.

0

이벤트는 jquery에 대기하므로 모든 할당/바인드 이벤트가 호출됩니다. 특정 이유로 인해 특정 대기중인 이벤트 만 바인드/바인드 해제해야하는 경우 해당 이벤트의 네임 스페이스가 변경됩니다.

$('button').click(function(){alert(1);}); 
$('button').click(function(){alert(2);}); 
//The 2 function gets called when the button is clicked 

$('button').unbind('click');//all handlers are removed. 


//Namespaced event 
$('button').click(function(){alert(1);}); 
$('button').bind('click.custom',function(){alert(2);}); 
//The 2 function gets called when the button is clicked 


$('button').unbind('click.custom');//only the click.custom is unbind 
관련 문제