2012-03-08 105 views
0

我只是在通過ajax加載表單時調用一個函數。我當前的代碼如下所示:Jquery Live Load - 通過ajax加載表單

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

我的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); 

       } 

     }) 

我知道,我可以把我的電話Ajax調用的成功部分內,但我試圖儘量減少代碼和resuse其他代碼,所以我真的很想使用實時功能。

我正在通過ajax加載一個表單,當這個表單被加載時,我想使用jquery live來觸發一個函數。當我將其設置爲「點擊」

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

,但它不需要運行的每次點擊此功能,我只需要它,這樣是對的形式負荷運行一次,爲什麼我想用這工作得很好加載監聽器不是點擊。

謝謝。

+0

調用.die裏面.live所以它會在執行一次後解除綁定。如果你使用jQuery 1.7,你應該使用.on。 – 2012-03-08 19:24:28

+0

現場沒有「加載」功能,唯一的辦法是通過成功回調。 – 2012-03-08 19:26:29

+0

你能回答下面的「答案」空間中的問題嗎?我可以給你一個綠色的複選標記。另外,如果你能提供一個我應該把.die放在哪裏的例子,我會非常感激。謝謝。 – user982853 2012-03-08 19:27:03

回答

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.one櫃面,如果你想了解如何使用.die來解除綁定。

您可以取消綁定.live使用.die點擊處理程序中,

DEMO

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

您可以使用.one如果你正在使用jQuery的1.7。請參見下面的代碼,

DEMO

$(document).one('click', 'form', function() { 
    alert('clicked'); 
}); 
+0

那不是OP需要的 – Andre 2012-03-08 19:31:25

0

你可能要考慮的load()方法,該方法是一個方便的方法$就

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); 
}); 
1

沒有一個dom插入事件。

雖然,在JavaScript可以觸發什麼

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

然後你就可以聽使用

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

手動觸發事件可能會有所幫助用於幾頁時,但如果你需要它在整個應用程序中使用,你會更好地使用一個插件,如由奧斯卡·賈拉提供的

相關問題