2009-10-25 4 views
2

어떻게 라이브 ('클릭', 함수 ...) 메소드를 비활성화 한 다음 Ajax 호출 (응답에 따라 다름) 후에 다시 활성화 할 수 있습니까?jquery 라이브 메서드, 모든 링크가 아닌 하나의 링크를 비활성화하는 방법

"event.preventDefault();"라는 일부 장소를 읽었습니다. 살아있는 방법에 일하지 말라. 그리고 그것이 효과가있다라고해도 나는 그것을 다시 가능하게 할 수 있냐? 내가 클릭 한 단일 링크뿐만 아니라 모든 링크를 사용할 수 없기 때문에 나는 죽을 ('클릭', 기능 ...) 방법을 사용할 수 없습니다.

답변

3

는이 코드를 가지고 말할 수

$('a.clickers').live('click', function() { 
    ///... 
}); 

클릭 할 때 무엇을 당신이하고 싶은 것은 밖으로 하나의 요소이다. jquery의 핸들러 함수는 항상 해당 컨텍스트가 처리중인 요소 (즉, this == 앵커 요소)로 설정됩니다. 그래서 우리는 이것을 사용하고 그것을 개별적으로 호출해야합니다.

$('a.clickers').live('click', function clickHandler() { 
    // keep a reference to the link that is clicked on so we can refer to it 
    // later in the ajax handler. 
    var elementClickedOn = this; 
    // removes the live event handler 
    // from just this link 
    $(elementClickedOn).die('click', clickHandler); 
    // your code 
    // ajax call, im not 100% familiar with ajax in jquery 
    // but you get the gist. 
    $.ajax(server, function ajaxHandler(responseargs) { 
     if (responseargs.reEnableConditionMet) { 
      //renable the element's live event handler, by referring to the 
      //original function 
      $(elementClickedOn).live('click', clickHandler); 
     } 
    }); 
}); 

이 정보가 도움이되기를 바랍니다.

+0

이것이 바람직한 지 궁금합니다. ".die()가 제대로 작동하려면 선택기가 .live()와 처음에 사용 된 선택기와 정확하게 일치해야합니다." [docs] (http://api.jquery.com/die/) – Casebash

+0

이 게시물은 2 세입니다. 아마 그때 일했을 것입니다. – barkmadley

관련 문제