2012-07-18 97 views
0

假設我有一個名爲index.php的頁面,它包含一個div元素名稱divContent,其中包含名爲「msg」的按鈕和另一個名爲「show」的按鈕。加載到div後Jquery Ajax錯誤

當我加載index.php兩個按鈕顯示良好。我在我的頁面上添加了jquery。當點擊我的「味精」按鈕時,它會顯示「成功」味精

alert(「successful」);

。它的工作就像當我點擊顯示按鈕(divContent外)時,它會通過ajax技術將另一個頁面內容加載到我的divContent中。

$('#msg').click(function(e) { 
    alert("successful"); 
}); 
} //Whilst editing formatting - extra closing brace 

$('#show').click(function(e) { 
    $.ajax({ 
     type: "GET", 
     url: "test.php", 
     success: function(msg){ 
      $('#divContent').html(msg); 
     } 
    }); 
    e.preventDefault(); 
}); 


test.php 
-------- 
    <input type="button" id="msg" /> 

test.php包含一個與msg按鈕相同的按鈕,它存在於index.php中。我的概率是加載index.php時,點擊msg按鈕它顯示成功的味精,但點擊顯示按鈕時,它加載test.php的包含到divContent中,並點擊msg按鈕,它不顯示「成功」的消息。什麼是問題

+0

是否顯示IE開發者工具中的「控制檯」中的任何錯誤? – 2012-07-18 10:17:17

回答

0

這是因爲您將點擊綁定到所有現有的#msg元素,它不會在綁定時不存在的任何元素上工作。所以當你加載新的內容時,它沒有綁定到它,你需要再次綁定它。

success: function(msg){ 
    $('#divContent').html(msg); 
    $('#msg').click(....); 
} 

OR,使用。對()方法:

發現這是一個祖先兩者#msg按鈕的元素,和一個事件綁定到它使用。對

$('.parent').on('click', '#msg', function(){ 
    alert("whatever"); 
}); 

這將確保任何作爲.parent的孩子的#msg,無論它何時被創建,都會有一個點擊事件。

來源:http://api.jquery.com/on/

+0

謝謝。但我爲了演示目的寫了這個bcoz目的是相同的,但代碼是其他。我想單擊提交按鈕時綁定表單元素提交事件。如何用ON方法綁定我的表單元素。 – user1523291 2012-07-18 10:42:23

+0

僅當內容已顯示在頁面上時,您才需要綁定您的點擊。這意味着在你的成功函數中,'$('#divContent')。html(msg);' – Rodik 2012-07-18 10:44:26

+0

提交將不適用於ON方法,因爲一些舊瀏覽器不會通過DOM冒泡提交事件。所以建議在加載元素時綁定點擊。 – Rodik 2012-07-18 10:46:38

0

你第一次點擊的功能有一個額外的右括號。

$('#msg').click(function(e) { 
    alert("successful"); 
}); 
} //<<Here