jQuery使用.on(load)来加载ajax加载的内容

jQuery use .on(load) with ajax loaded content

本文关键字:加载 ajax 使用 on load jQuery      更新时间:2023-09-26

我有一个网页与AJAX加载的内容。如果我点击"export",内容会重新加载,并使用PHP生成一个HTML元素:

<a style='"display:none;'" id='"menue-export-link'" href='"download/".$this->select->downloadcsv."'"></a>

现在我想自动开始下载,所以我编写了以下JavaScript代码来在a-Element加载时开始下载:

$(document).ready(function () {
    $(document).on('load', '#menue-export-link', function() {
        console.log('click export');
        $('#menue-export-link').click();
        $('#menue-export-link').remove();
    });
});

但是什么都没发生,有人知道吗?

首先,html锚元素没有loadonload事件。因此,正如@The F所说,您必须在ajax成功回调中触发下载。记得在DOM中添加html之后找到并触发它。关于jQuery ajax的更多信息http://api.jquery.com/jquery.ajax/

现在是触发下载部分。触发导致导航的点击事件有点棘手。下面的问题很好地解答了jQuery:如何触发锚链接's点击事件和如何通过jquery模拟锚点点击?

你的js被触发时,你的主页加载和#menue-export-link可能不存在的时间。如果使用$.ajax来加载该链接,请将javascript放入成功回调中,以确保链接存在或在触发代码之前正在加载。

$(document).on("click", "#menue-export-link", function() {
  console.log("click export");
});