ajax调用后使用onclick函数

时间:2014-09-26 21:23:52

标签: javascript jquery ajax html5 dom

所以我构建了一个页面,所有数据都被拉入其中。在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(东西,东西)会起作用,但这将涉及重建我的所有功能。所以尽量避免这种情况。

1 个答案:

答案 0 :(得分:1)

这是因为jQuery / JavaScript不知道myfile.php中加载的项目。最简单的解决方案是使用on()委派事件,因此这些事件将冒出DOM树。

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

例如 -

$(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!");
    }
});