Подскажите как перебрать в jquery картинки из массива
есть код
$(function() {
function readURL(input) {
$(input.files).each(function(i, el) {
var reader = new FileReader();
reader.onload = function(e) {
$('<img>').attr('src', e.target.result).appendTo('#im');
};
reader.readAsDataURL(input.files[i]);
});
}
$("#imgInput").change(function() {
readURL(this);
});
});
img {
width: auto;
height: 80px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="file" name="bn" id="imgInput" multiple>
<div id="im"></div>
при загрузке каждой фото мне нужно вставить в li
<ul class="ai_image__list ui-sortable" id="sortable" rotation="0">
<li class="ai_image__upload"></li>
<li class="ai_image__upload"></li>
<li class="ai_image__upload"></li>
<li class="ai_image__upload"></li>
<li class="ai_image__upload"></li>
</ul>
вот например я удалил из списка одно изображение, то мне нужно удалить и в общем img[], а если я вместо удаленного новое добавил то присоединить
Поддерживает выбор нескольких картинок сразу.
let input = document.getElementById("input");
let ul = document.getElementById("ul")
input.addEventListener("change", e => {
ul.innerHTML = "";
for (var i = 0; i < e.srcElement.files.length; i++) {
let file = e.srcElement.files[i];
let li = document.createElement("li");
let img = document.createElement("img");
li.append(img);
let reader = new FileReader();
reader.onloadend = function() {
img.src = reader.result;
ul.appendChild(li);
}
reader.readAsDataURL(file);
}
});
ul>li>img {
width: 30px;
margin: 10px;
}
<input type="file" id="input" accept=".jpg,.jprg,.png" multiple>
<ul id="ul"></ul>
FileList
у input
только для записи. Поэтому вместо манипуляций с ним предлагаю использовать отдельный массив, куда добавляются выбранные файлы.
При клике по списку элемент удаляется и из списка и из массива.
(function() {
const inputImage = $('#input-image');
const imagesList = $('#images-list');
const images = [];
inputImage.on('change', changeHandler);
function changeHandler(e) {
addImage(e.target.files[0], imagesList);
}
function addImage(image, parent) {
images.push(image);
const reader = new FileReader();
const item = $('<li>').attr('key', images.length);
item.appendTo(parent);
item.on('click', itemClickHandler);
reader.onload = function(e) {
$('<img>').attr('src', e.target.result).appendTo(item);
}
reader.readAsDataURL(image)
}
function itemClickHandler(e) {
const item = ($(e.target).prop('tagName').toLowerCase() === 'img') ?
$(e.target).parent() :
$(e.target);
images.splice(item.attr('key') - 1, 1);
$(item).remove();
}
})()
img {
width: auto;
height: 80px;
}
<input id="input-image" type="file">
<ul id="images-list"></ul>
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Всем привет! Использую Prism c Unity iocЕсть две модели-представления
Задача: получить данные из БД-MySql в ObservableCollection и затем передать в DataGrid