繁体   English   中英

触发click()以获取动态创建的元素

[英]Trigger click() for dynamically created elements

好的,有几种方法可以解决触发动态生成元素的click()问题。 首先,这适用于Chrome,但不适用于IE或FF:

var href="/myUrl";
var link = $("<a>");
link.prop("href", href);
link[0].click()

因此,如果想到在不存在的元素上使用click()将无法在IE或FF中工作,那么最好的方法是什么?

var href="/myUrl";
var link = $("<a>");
link.prop("href", href);
$(document).append(link); // Attach it to the DOM so it exists
link[0].click()

或者有什么比我更缺的更简单吗? 感谢任何有用的提示。

您已经说过要触发文件下载。 另一种简单的方法是在页面上有一个不可见的iframe

<iframe src="about:blank" style="display: none" id="downloader"></iframe>

...然后当你想要触发下载时:

$("#downloader").attr("src", "/myUrl");

与您当前的解决方案一样,包含该文件的响应必须具有Content-Disposition标头,将其标识为“附件”(相同的标头也可以建议名称),以获得跨MIME类型的一致处理。

以下是我在生产代码中使用的函数,它与您的有点不同,但它可能就是您所需要的。

function psuedoClick(href, target){
    if(!target) target = '_self';
    var falseAnchor = $('<a/>').attr({
        'href' : href,
        'target' : target
    }).appendTo('body');
    falseAnchor[0].click();
    falseAnchor.remove();
};

只需在调用函数时传入参数即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM