所以我构建了一个页面,所有数据都被拉入其中。在IE9 +和Chrome中工作得很好但需要它在IE8中工作,任何通过ajax拉入的东西都不会工作。代码就是这样的。
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>
注意:我知道$(某事).on(东西,东西)会起作用,但这将涉及重建我的所有功能。所以尽量避免这种情况。
答案 0 :(得分:1)
这是因为jQuery / JavaScript不知道myfile.php中加载的项目。最简单的解决方案是使用on()
委派事件,因此这些事件将冒出DOM树。
例如 -
$(document).on('click', 'element', function() {
现在,当点击元素时,点击事件会冒泡到文档的位置。事件冒泡的元素必须在jQuery代码最初运行时存在,因此jQuery“知道”该元素并且可以拦截该元素的冒泡事件。这使得文档成为一个相当安全的赌注,但如果你愿意,你可以缩小它。
如果您不想更简单的路线,可以在vanilla 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!");
}
});