2016-03-27 133 views
0

我使用ajax提交頁面並返回基於用戶操作的內容塊的入職序列。選擇器不工作的Ajax響應

如果有一個頁面加載並獲得1個內容元素,用戶然後單擊是或否,將下一個內容元素加載到同一空間(通過ajax)。

出於某種原因,我的選擇器似乎並沒有在這個Ajax加載HTML。

這裏是我的ajax功能,獲取方式:

$.ajax({ 
    beforeSend: function() { 
     $("#loader").toggleClass('progress'); 
    }, 
    type: 'POST', 
    dataType: 'json', 
    data: data, 
    url: baseUrl+'welcome/user_confirmation_form', 
    complete: function(response) { 
    $("#loader").toggleClass('progress'); 
    }, 
    success: function(response) { 
     console.log(response); 
     $("div.welcome-page > .col").html(response.response); 

     }, 
    error: function(response) { 
     $("#next-steps").html(response.response); 
    } 
    }); 

然後我試圖訪問提交按鈕(曾試圖做它作爲一個AHREF和按鈕類型=提交,但似乎沒有被選擇該事件。

$('div.welcome-page').on('submit', "user_complete", function(e) { 
      e.preventDefault(); 
      console.log('FOund form'); 

      var user = $(this).serializeArray(); 
      console.log(user); 
     }); 

如果我查看源代碼,阿賈克斯返回的HTML甚至不是在DOM,但它通常是觀看時,在界面。

我猜這爲S與它有什麼關係?

如何選擇所有表單數據?

任何時候我點擊按鈕或ahref它只是再次觸發相同的頁面。

+0

當你試圖操縱表單? AJAX加載異步。處理程序被調用,當所有當前腳本運行並且控制權返回給瀏覽器時。 DOM插入後你確定要訪問*嗎? –

回答

1

如果user_complete是您在加載的html中的提交按鈕上指定的類,那麼您缺少a。

$('div.welcome-page').on('submit', ".user_complete", function(e) { 

但是,如果您在使用提交操作,因爲它正在偵聽提交事件,這隻會起作用。也許你想聽點擊事件?

0

您需要將事件綁定到您的處理程序以添加新添加的HTML元素。您的原始電話號碼爲

$('div.welcome-page').on('submit' ... 

只綁定該時間點上頁面上元素的事件處理程序。

你可以把你處理成一個函數...

var myHandler = function(e) { 
    e.preventDefault(); 
    var user = $(this).serializeArray(); 
} 

然後你加載你需要處理程序綁定到事件新的HTML後。所以,成功與AJAX你會...

success: function(response) { 
    $("div.welcome-page > .col").html(response.response); 
    $('div.welcome-page').on('submit', "user_complete", myHandler); 
},