2010-03-10 8 views
3

나는 ajax를 사용하는 응용 프로그램에서 PHP 작업을하고 있습니다. 사용자가 자바 스크립트 그가를 사용하도록 설정 한 경우 내가 직접 링크로 내가 클래스 ajaxlink를 추가 jQuery를 납치 링크를 얻으려면 모든 링크에주문이 중요한 jQuery에서 여러 클릭 이벤트 처리

<a class="someclass ajaxlink" href="somelocation1">goto1</a> 
<a class="someclass ajaxlink" href="somelocation2">goto2</a> 
<a class="someclass ajaxlink" href="somelocation3">goto1</a> 

자바 스크립트는이

$('.ajax-link').click(function(){get link with ajax}); 

과 같이 보입니다 페이지 물마루 아약스를 얻을 것이다. 하나의 특정 나는 여러 페이지를 가지고, 그래서 모든 페이지에 대해 동일한 링크를 생성하는 동일한 기능을 가지고.

이제 내 문제는 한 페이지의 링크 중 하나에서 다른 것을하고 싶습니다. Ajax 페이지가 성공적으로 반환되면 다른 기능을 수행해야합니다. 이제 나는 이와 같은 코드를 가지고있다.

<div class"specialclass"> 
    <a class="someclass ajaxlink" href="somelocation1">goto1</a> 
    <a class="someclass ajaxlink" href="somelocation2">goto2</a> 
    <a class="someclass ajaxlink" href="somelocation3">goto1</a> 

    <a class="someclass ajaxlink special-1" href="somelocation">goto</a> 
    <a class="someclass ajaxlink special-2" href="somelocation">goto</a> 
    <a class="someclass ajaxlink special-3" href="somelocation">goto</a> 
</div> 

$('.ajax-link').click(function(){get link with ajax}); 
$('.specialclass .special-1, 
    .specialclass .special-2, 
    .specialclass .special-3').click(function(){get link with ajax}); 

이 설정은 동일한 컨테이너에있는 정상 링크를 정상적으로 실행하기를 원하기 때문입니다. 하나의 특수 링크 만 다른 클릭 이벤트를 추가하고 싶습니다. 나는 응용 프로그램의 한 특정 페이지에서만 실행해야하기 때문에이 이벤트를 일반 클릭 이벤트에 추가 할 수 없다고 생각합니다. 다른 모든 페이지에서는 불필요한 코드가됩니다.

그러나이 설정에서는 특수 클래스 클릭이 먼저 발생하고 이후에 ajaxlink 클래스가 발생하기 때문에 오류가 발생합니다. 이것은 전환되어야하며, ajaxlink가 성공을 거둔 경우에만 실행해야합니다.

누구나 이것에 대한 아이디어가 있습니다.

답변

3

당신은 전체 프로세스에서 일반 클릭 기능을 리팩토링과이 작업을 수행 할 수 있습니다 :

var normalClick=function(){/*get link with ajax*/}; 

$('.ajax-link').click(normalClick); 
$('.specialClass').click(
    function(){ 
    normalClick(); 
    /* special click code */ 
    } 
); 
+0

감사를 읽습니다. 나는 아약스가 완성 된 후에 훨씬 더 많은 것을 할 수있다. 나는 그것을 시도 할 것이다. –

+0

나는 이것에 대한 질문이있다. 이 메서드를 사용하면 링크에 ajax-link 클래스와 spcialclass가 모두있는 경우 normalclick 이벤트가 두 번 트리거됩니까? –

+1

event.stopImmediatePropagation()을 추가했습니다. specialClass에 지금은 잘 작동합니다, 고마워! –

1

ajax 요청에서 전체 콜백을 사용해 보셨습니까? Jquery Docs for ajaxComplete

+0

덕분에 나는이 솔루션은 잘 작동합니다 생각 트로프에게 –

관련 문제