2014-09-26 180 views
0

所以我建立了一個頁面,所有的數據都被拉入。在IE9 +和Chrome中運行良好,但需要它在IE8中運行,並且任何通過ajax運行的東西都無法運行。代碼會是這樣的。ajax調用後使用onclick函數

AJAX

$.ajax({ 
    url: "includes/myfile.php", 
    type: "GET", 
    data: ({'data' : data,}), 
    success: function(data){ 
    $("section").append(data); 
    } 
}); 

JS

function myfunction(data){ 
//do something 
} 

HTML

< button onclick='myfunction(data)' > click here < /button> 

注:我知道$(的東西)。在(東東,東東)將工作,但將涉及重建我所有的功能。所以儘可能避免這種情況。

+0

你會不會「重建我的所有功能,」你會被替換所有的功能1功能。 – MrYellow 2014-09-26 22:46:54

回答

1

這是因爲jQuery/JavaScript不知道在myfile.php中加載的項目。最簡單的解決方案是使用on()來委託那裏的事件,所以這些事件會冒泡DOM樹。

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

例如 -

$(document).on('click', 'element', function() { 

現在,當點擊的元素的單擊事件冒泡來記錄它會起作用。事件冒泡的元素必須存在於您的jQuery代碼初始運行時,因此jQuery可以「知道」該元素,並且可以攔截到該元素的冒泡事件。這使文件成爲一個相當安全的賭注,但如果你願意,你可以縮小它的範圍。

如果你不想去省事,你可以在香草的JavaScript編寫事件代表團:

// get the parent element, add a click listener... 
document.getElementById("element").addEventListener("click", function(e) { 
    // example using a list item 
    if(e.target && e.target.nodeName == "li") { 
     console.log("list item ", e.target.id.replace("post-"), " was clicked!"); 
    } 
});