好的,有几种方法可以解决动态生成元素的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()
还是有一些更简单的东西我不知道了吗?感谢任何有用的提示。
答案 0 :(得分:2)
您已经说过要触发下载文件。另一种简单的方法是在页面上有一个不可见的iframe
:
<iframe src="about:blank" style="display: none" id="downloader"></iframe>
...然后当你想要触发下载时:
$("#downloader").attr("src", "/myUrl");
与您当前的解决方案一样,包含该文件的响应必须具有Content-Disposition
标头,将其标识为“附件”(相同的标头也可以建议名称),以获得跨MIME类型的一致处理
答案 1 :(得分:1)
以下是我在生产代码中使用的功能,它与您的功能略有不同,但它可能就是您所需要的。
function psuedoClick(href, target){
if(!target) target = '_self';
var falseAnchor = $('<a/>').attr({
'href' : href,
'target' : target
}).appendTo('body');
falseAnchor[0].click();
falseAnchor.remove();
};
只要在调用函数时传递参数,它就可以工作。