2012-07-27 1 views
1

그래, 내가 연구를 조금 해봤는데, 나는이 아약스 문제에 좀 머물러있다.HTML 요소를 초기 페이지로드 후에로드하는 경우 트리거로 사용하는 방법은 무엇입니까?

나는 두 개의 A HREF를 가지고 있는데, 그 중 하나는 Ajax 호출을 보내는 "테스트"이고 실제 페이지 매김의 다음 버튼과 같은 역할을하는 ".page"입니다. 페이지 버튼을 클릭하면 숨겨진 입력 필드 값이 페이지 2로 변경되어 페이지 2로 이동하지만 아약스는 변경됩니다. 지금은 단지 페이지 -2로 변경하고 입력 된 숨김 필드를 console.log로 변경하기 위해 하드 코딩했습니다.

현재 AJAX 호출은 현재 테스트 용으로 모든 게시물 데이터를 보내지 않으며, 페이지 헤더 인 href를 출력합니다.

나는 AJAX 페이지 매김을하려고합니다.

테스트를 클릭하면 기본적으로 asdasd 대신 텍스트로 페이지 매김이있는 동일한 링크로 현재의 Asdasd 링크 (페이지 매김 버튼과 같은 역할)가 대체됩니다. 이 링크는 숨겨진 입력 값을 변경해야하지만, 페이지 링크가 AJAX에 의해 생성되고 페이지가로드 된 후에로드되기 때문에 초기 jQuery는 작동하지 않으며 아무 것도 수행하지 않습니다. 아약스 호출을 사용하여 동일한 jquery를 에코하면 작동하지만 문제는 아약스가 호출 될 때마다 jquery 스크립트를 다시로드하지 않아도된다는 것입니다.

는 나는이 같은 .ready 사용할 수 있다고 생각 : 페이지가 나던도 이해를 제외한 준비 또는 어떤 경우에는 내가 항상 시도하고 볼 것이라고 생각

$('.page').ready(function(){ 
    $('.asdasd, .page').on("click", function(e){ 

    e.preventDefault(); 

    if($(this).hasClass('page')){ 
      console.log(true); 
    } 

    $('.new-page').val('page-2'); 

    console.log($('.new-page').val()); 
}); 

.

내가 알고있는 거의 모든 것이 작동한다는 것을 알기 때문에 jquery 스크립트를 보내고 각 jquery 호출에서 다시 출력해야만 HTML DOM 요소가 다시로드되고 jquery가이를 인식합니다.

제 질문은 jQuery 스크립트를 한 번만로드하고 페이지가로드 된 후에도로드 된 경우에도 해당 페이지 매김 단추를 항상 가져 오는 방법이 있습니까?

답변

1

사용 jQuerys 'delegate 방법 :

설명 : 현재 또는 미래의 선택, 일치하는 모든 요소에 대해 하나 개 이상의 이벤트에 핸들러를 연결, 루트 요소의 특정 세트를 기반으로 .

$(document.body).delegate('.asdasd, .page', 'click', function(e) { 
    e.preventDefault(); 

    if ($(this).hasClass('page')) { 
     console.log(true); 
    } 

    $('.new-page').val('page-2'); 

    console.log($('.new-page').val()); 
});​ 
+0

당신의 각하, 더 중독자의, 순전히 천재 –

+0

@DavidLawrence입니다 ... – xandercoded

+0

그냥 참고로 위의 jQuery를 1.7를 사용하는 경우,'delegate'은'on' 방법으로 대체되었습니다 ... 변화시킬 수있는 유일한 것은 내가 믿는 처음 두 매개 변수의 순서입니다. http://api.jquery.com/delegate/ – Funka

관련 문제