2009-09-14 10 views
1

다음은 내가하려는 일입니다.요격 자바 스크립트 이벤트

일부 링크가있는 페이지가 있습니다. 대부분의 링크에는 onclick 이벤트에 첨부 된 기능이 있습니다.

이제는 CSS 클래스를 일부 링크로 설정하고 링크 중 하나를 클릭 할 때마다 특정 함수를 실행하려고합니다. 링크가 반환 된 후 링크가 첨부 된 onclick 함수를 실행하도록합니다. 그것.

내가 원하는 것을 할 수있는 방법이 있습니까? 내가 차이를 만드는 경우 jQuery를 사용하고 있습니다. I 버튼의 많은에 대한 몇 가지 확인 상자 (상자 형 사용) 넣어 물었다 그리고 난 정말 가고 싶지 않아 때문이다

$("#link").click(function1); 
$("#link").click(function2); 
$("#link").click(function(){ 
    firstFunctionToBeCalled(function(){ 
     // ok, now execute function1 and function2 
    }); 
}); // somehow this needs to be the first one that is called 


function firstFunctionToBeCalled(callback){ 
    // here some user input is expected so function1 and function2 must not get called 
    callback(); 

} 

이 모든 : 여기

는 예제를 시도입니다 모든 버튼을 통해.

+0

는 관련 참조 : http://stackoverflow.com/questions/487069/add-event-in-the-head-of-thequeue –

답변

0

jQuery의 바인딩 해제를 사용하여 기존 이벤트를 제거한 다음 원하는 이벤트를 원하는 순서대로 조율 할 함수를 바인딩합니다.

바인딩 및 바인딩 해제 모두 jquery.com에 jQuery를 워드 프로세서에 있고

$(".myClass").unbind("click"); // removes all clicks - you can also pass a specific function to unbind 

$(".myClass").click(function() { 
    myFunctionA(); 
    myFunctionB($(this).html()); // example of obtaining something related to the referrer 
}); 
+0

요소에 첨부 된 onclick 함수는 어떻게됩니까? – rahul

+0

바로 그 점은 모든 링크마다 다른 메소드/메소드가 있으며 메커니즘이 일반화되어야한다는 것입니다. 따라서 모든 요소에 적용 할 수 있습니다. – sirrocco

0

못생긴 해킹은 mousedown을 사용하거나 이벤트와 mouseUp하는 것 ... 이런 식으로 작동합니다. 이들은 before the click event이라고합니다.

내가 제대로 이해하면
+0

그렇습니다. 클릭이 발생하면 함수를 실행하고 해당 함수 콜백에서 모든 첨부 된 함수를 계속 실행해야합니다. – sirrocco

1

, 당신은 핸들러의 나머지 전에 이벤트 처리기를 추가 할 수있는 경우 사용을 시도 할 수 있습니다 ..

var originalEvent = page.onclick; //your actual onclick method 
page.onclick = handleinLocal;  //overrides this with your locaMethod 

function handleinLocal() 
{  ...your code...  
    originalEvent(); 
// invoke original handler 
}