#html #duplicates
#HTML #дубликаты
Вопрос:
Я работаю над проектом, который содержит список изображений в неупорядоченном списке, и я подумал, что было бы неплохо иметь возможность выполнить действие, которое дублировало бы элемент списка и добавляло его во второй неупорядоченный список. По сути, это означало бы создание списка избранных при сохранении исходного списка.
Я довольно новичок в html, поэтому я не уверен, как я мог бы добиться этого. Буду признателен за любую помощь.
Комментарии:
1. Довольно просто с
JOuery
.2. @PM77-1 Я тоже только изучаю jQuery. Не могли бы вы привести пример? Я пытался сделать что-то вроде этого:
if (e.ctrlKey){ $('.menu').attr('id', selectId); selectId.clone(true).appendTo('.favMenu ul'); }
3. Если вы хотите запустить свое действие нажатием на одно из изображений, вам нужно добавить прослушиватели событий ко всем вашим исходным изображениям.
4. @PM77-1 Я понял это, спасибо. Вы знаете, как я могу избежать дублирования элемента списка во второй раз? Например, если щелкнуть изображение, оно добавляется в меню избранного. Как я могу избежать возможности добавления его несколько раз?
Ответ №1:
Вот весь JSFiddle (без реальных изображений) на чистом JS.
Я реализовал исключение дубликатов с помощью for
цикла внутри следующей функции:
function copyToFavorites(event) {
var image = event.srcElement;
var src = image.src;
var dup;
// determine if it's a duplicate
var ul = document.getElementById("fav");
var images = ul.getElementsByTagName("img");
for (var i = 0; i < images.length; i) {
dup = (images[i].src === src);
if (dup) {
break;
}
}
// if not a duplicate - add to favorites
if (! dup) {
var li = document.createElement("li");
var newImg = document.createElement("img");
newImg.src = src;
li.appendChild(newImg);
ul.appendChild(li);
} else {
alert("This ismage is already in Favorites");
}
}
Не смог придумать ничего более элегантного.
Комментарии:
1. Большое спасибо. В конечном итоге я придумал нечто подобное. Вот оно:
$(document).ready(function(){ $('.menu').find('a').click(function(e){ var selectName = $(this).attr('name'), selectId = $(this).attr('id'); if (e.which == 2){ $(".favMenu").append('<li>' $(this).html() '</li>'); } }); });
Ваш код определенно делает больше, чем мой, поскольку проблема дублирования была той, которую я не решил. Однако я обнаружил, что не смог отредактировать css для этих дублированных элементов, например, чтобы у них была зеленая граница.
Ответ №2:
Вы можете добиться этого с помощью javascript, jQuery или любой другой помощи. Проверьте этот пример с помощью jQuery. В примере есть только текст, но он будет идеально работать с любым содержимым внутри тега li. http://goo.gl/bplTrm