2012-03-08 2 views
0

아약스를 통해 양식을로드 할 때 함수를 호출하기 만하면됩니다. 나의 현재 코드는 다음과 같습니다JQuery 라이브로드 - 아약스를 통해 양식로드

$('form').live("load",function() {...} 

내 아약스 호출은 다음과 같습니다

jQuery.ajax({ 

       type: "get", 
       url: "../design_form.php", 
       data: "coll=App_Forms&form=Step_1_Company_Sign_Up", 
       dataType: "html", 
       success: function(html){     
          jQuery('#Right_Content').hide().html(html).fadeIn(1000); 

       } 

     }) 

내가 아약스 호출의 성공 부분 내부에 내 전화를 넣을 수 있다는 것을 알고 있지만 내가 최소화하기 위해 노력하고 코드를 작성하고 다른 코드를 재사용하므로 실제 기능을 사용하고 싶습니다.

아약스를 통해 양식을로드하고 해당 양식이로드 될 때 jquery live를 사용하여 함수를 트리거하려고합니다. 내가

$('form').live("click",function() {...} 

을 "클릭"하도록 설정하지만 내가 사용하려는 이유를 난 그냥 즉 있도록 양식로드에 한 번 실행하는 데 필요한 모든 클릭에이 기능을 실행할 필요가 때 잘 작동 로드 리스너는 클릭이 아닙니다.

감사합니다.

+0

.die inside .live 그래서 한 번 실행 한 후에 언 바인딩됩니다. jQuery 1.7을 사용하는 경우 .on을 사용해야합니다. –

+0

라이브에 대한 "로드"기능이 없으며 성공 콜백을 통해서만 수행 할 수 있습니다. –

+0

아래의 "답"영역에서 질문에 답할 수 있습니까? 나는 당신에게 녹색 체크 표시를 할 수 있습니다. 또한 .die를 어디에 넣어야하는지에 대한 예제를 제공 할 수 있다면 매우 감사 할 것입니다. 감사. – user982853

답변

0

편집 :는 당신이 성공 콜백 내부 사용자 지정 코드를 가지고 싶어 생각 서로 다른 페이지에서 동일한 Ajax 호출을 복제하고 싶지 않으므로 다른 페이지에서 사용됩니다. 그렇다면 성공 콜백 내부에서 함수를 호출하고 다른 페이지에서 다른 버전을 구현해야합니다.

jQuery.ajax({ 
      type: "get", 
      url: "../design_form.php", 
      data: "coll=App_Forms&form=Step_1_Company_Sign_Up", 
      dataType: "html", 
      success: function(html){     
        jQuery('#Right_Content').hide().html(html).fadeIn(1000); 
        afterFormLoad(); //Implement this function 
      } 

    }); 

    function afterFormLoad() { } //dummy function defined in the common code 

그리고 특정 페이지

,
function afterFormLoad() { 
     //this is from page 1 
    } 
바로 아래

당신에게 보여줍니다 대한 .live/.die하고 .die를 사용하여 바인딩을 해제하는 방법을 이해하려는 넣다 경우 .one.

당신은

DEMO

$('form').live("click",function(e) { 
    alert('clicked'); 
    $('form').die('click'); // This removes the .live() functionality 
}); 

당신은 .one을 사용할 수 있습니다

당신은 jQuery를 1.7를 사용하는 경우, .die를 사용하여 클릭 핸들러 내부 .live 바인딩을 해제 할 수 있습니다.없다 $ 아약스

http://api.jquery.com/load/

var data= "coll=App_Forms&form=Step_1_Company_Sign_Up" 
jQuery('#Right_Content').hide().load("../design_form.php", data,function(){ 
      /* this is the success callback of $.ajax*/      
      jQuery(this).fadeIn(1000); 
}); 
+0

OP가 필요한 것이 아니라 – Andre

1

jquery를 실행하는 데 '로드'가 없으므로 API 설명서를 읽으십시오. 다른 한편으로 http://api.jquery.com/live/

, 당신은 "livequery"라는 플러그인을 사용하고 같은 것을 호출 할 수 있습니다

$(selector).livequery(function(){ 

}); 

을하면 더 라이브 jQuery를 대신하는 플러그인에 '클릭'이없는 볼 수 있듯이 . 플러그인의

희망이 도움이 :-)

0

당신은의 편리한 방법이다 load() 메서드를 고려할 수, 코드 아래 참조 DOM 삽입 이벤트.

자바 스크립트 당신이 그럼 당신은 페이지의 몇 사용을 위해 도움이 될 수 수동으로 이벤트를 트리거

jQuery('#Right_Content').on('ajax-load', callback); 

사용하여 이벤트를 수신 할 수 아무것도

success: function(html){     
    jQuery('#Right_Content').hide().html(html).fadeIn(1000) 
    .trigger('ajax-load'); 
} 

를 트리거 할 수 있지만, 하지만 전체 응용 프로그램에서 사용하려면 Oscar Jara에서 제공하는 것과 같은 플러그인을 사용하는 것이 더 좋습니다.

1

DEMO

$(document).one('click', 'form', function() { 
    alert('clicked'); 
}); 
관련 문제