Javascript 在ajax调用后使用onclick函数

Javascript 在ajax调用后使用onclick函数,javascript,jquery,ajax,html,dom,Javascript,Jquery,Ajax,Html,Dom,因此,我构建了一个页面,所有数据都被拉入其中。在IE9+和chrome中工作得很好,但需要它才能在IE8中工作,而通过ajax引入的任何东西都无法工作。代码应该是这样的 阿贾克斯 JS HTML 单击此处 注意:我知道$(某物)。on(stuff,stuff)可以工作,但这需要重建我的所有函数。因此,如果可以的话,尽量避免这种情况。这是因为jQuery/JavaScript不知道myfile.php中加载的项目。最简单的解决方案是使用on()在那里委托事件,这样这些事件就会在DOM树中冒泡

因此,我构建了一个页面,所有数据都被拉入其中。在IE9+和chrome中工作得很好,但需要它才能在IE8中工作,而通过ajax引入的任何东西都无法工作。代码应该是这样的

阿贾克斯

JS

HTML



注意:我知道$(某物)。on(stuff,stuff)可以工作,但这需要重建我的所有函数。因此,如果可以的话,尽量避免这种情况。

这是因为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!");
    }
});
您将不会“重建我的所有函数”,而是将所有函数替换为一个函数。
< button onclick='myfunction(data)' > click here < /button>
$(document).on('click', 'element', function() {
// 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!");
    }
});