为什么只有第二个.click()工作?

时间:2015-01-13 08:46:54

标签: jquery google-chrome

我这里有两个代码块,但只有第一个代码正常运行。我不确定为什么。是否与"下载"属性?为什么?或者,是因为dl没有正确引用正确的对象?在这里非常困惑,现在已经持续了一两个小时。

(另外,有没有办法点击一个对象而不将其附加到DOM?猜不行。)

// WORKING
var a = document.createElement("a");
a.style = "display: none";
a.href = window.URL.createObjectURL(new Blob([this.list.join("\r\n")], {type: "octet/stream"}));
a.download = fileName;
a.click();
window.URL.revokeObjectURL(a.href);

// NOT WORKING
var dl = $('<a>',{
  style: 'display: none',
  download: fileName,
  href: window.URL.createObjectURL(new Blob([this.list.join("\r\n")], {type: "octet/stream"}))
});
$('body').append(dl);
dl.click();
window.URL.revokeObjectURL(dl.href);

1 个答案:

答案 0 :(得分:0)

第一个是一个DOM对象,它有一个click方法,第二个是一个jQuery对象,它表现为一个数组 - 从数组中获取第一个DOM元素,就像读取任何普通的javascript数组一样dl[0]。然后,您可以在此对象上调用click方法,该方法不需要添加到DOM中。

dl[0].click()