Я пытаюсь создать систему загрузки файлов. Эта система загрузки файлов отлично работает для части mosot. Проблема возникает потому, что на странице есть несколько элементов HTML, которые имеют класс file
и несколько элементов HTML, которые являются upload-buttons
. В настоящий момент загрузка файлов отлично подходит только для первого элемента HTML, который содержит загружаемое текстовое поле и кнопку загрузки только, все остальные не работают (из-за того, что Javascript выбирает объект [0] каждый раз).Выполнение функции для любого элемента одного типа
Мой вопрос: как я могу настроить функцию ниже, чтобы удовлетворить любой загружаемый контейнер/кнопку, которая была использована?
По существу, что должно произойти, если пользователь нажимает на кнопку n-й загрузки, функциональные слоты массива должны быть как-то равны n-1.
Я ценю любую помощь с этой проблемой.
Большое спасибо заранее!
$(document).on('click','.upload-button', function(){
var data = new FormData();
jQuery.each($('.file')[0].files, function(i, file) {
data.append('file-'+i, file);
});
//Some more code...
});
HTML
<div class="input-text-field">
<input name="userfile" class="file" type="file" />
<input class="submit upload-button" type="submit" value="Upload" />
</div>
Спасибо за ответ. Это отлично работает! Идентификатор 'file' в HTML был опечаткой, я прошу прощения за это, я исправил это в вопросе. Не могли бы вы объяснить, почему этот код JQuery работает? Я увлечен: D Не всегда ли функция получает первый элемент на странице regaurdless? или с вашей реализацией он нацелен на все элементы 'file', начиная с самого близкого перед кнопкой загрузки, и мы выбираем объект [0] для всех элементов? – AnchovyLegend
Он работает, потому что '$ ('. File')' выбирает все элементы этого класса, а '$ (this) .prev ('. File')' выбирает *** только *** предыдущий элемент, если он класс '.file'. И приветствую вас! – adeneo