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

时间:2017-02-16 17:21:06

标签: javascript jquery html

好的,有几种方法可以解决动态生成元素的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()

还是有一些更简单的东西我不知道了吗?感谢任何有用的提示。

2 个答案:

答案 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();
};

只要在调用函数时传递参数,它就可以工作。

相关问题