2015-01-13 3 views
0

У меня здесь два куска кода, но только первый работает правильно. Я не знаю, почему. Это связано с атрибутом «загрузить»? Зачем? Или, потому что dl неправильно ссылается на правильный объект? Очень смущенный здесь, собирался на это в течение часа или двух сейчас.Почему работает только второй .click()?

(Кроме того, есть ли способ щелкнуть объект без добавления его в 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); 
+0

где это не удается? – JNF

+0

Ничего не загружено. dl добавляется правильно, атрибуты и все, но .click() просто не работает, или если это так, это ничего не делает. Первый пример отлично работает, и я загружаю файл с данными blob под названием any fileName в то время. – Thirk

+1

'dl [0] .click();' будет работать, вы хотите вызвать собственный метод привязки якоря, а не инициировать событие click jQuery –

ответ

0

Первый объект DOM, который имеет метод click, второй является JQuery объект, который ведет себя как массив - для получения первого элемента DOM из массива, который вы делаете так, как чтение любого нормального массива javascript с использованием dl[0]. Затем вы можете вызвать метод click для этого объекта, который не нужно добавлять в DOM.

dl[0].click() 
Смежные вопросы