Найдите src html-файла и вставьте этот src во вновь созданный объект

#jquery #events #get #copy #fetch

#jquery #Мероприятия #получите #Копировать #извлечение

Вопрос:

Название в основном объясняет это. У меня есть элемент img. Двойной щелчок по нему создает новый элемент img, но я хочу, чтобы он использовал тот же src, что и тот, на котором я дважды щелкнул. Следовательно, я хочу, чтобы этот единственный скрипт работал для нескольких разных изображений. Я не уверен, как извлечь src и вставить его.

Кроме того, к копиям будет добавлен класс, который идентифицирует их как копию. Я пытался создать скрипт для удаления элементов с классом ‘copy’ при двойном щелчке, но это не работает.

Ответ №1:

Основываясь на вашем вопросе, вот правильное решение вашей проблемы.

Двойной щелчок по нему создает новый элемент img, но я хочу, чтобы он использовал тот же src, что и тот, на котором я дважды щелкнул….Кроме того, к копиям будет добавлен класс, который идентифицирует их как копию.

 $("img:not(.copy)").live("dblclick", function(){
    $("body").append($(this).clone().addClass("copy"));
});
  

Это используется, .live() однако может быть изменено на use .dblclick() в зависимости от того, загружаются ли оригиналы не динамически. img:not(.copy) Будут предназначены только для изображений, у которых нет класса copy. Текущий элемент this (который является <img/> ) является than clone() и добавлен класс copy.

Я пытался создать скрипт для удаления элементов с классом ‘copy’ при двойном щелчке, но это не работает.

 $("img.copy").live("dblclick", function(){
    $(this).remove();
});
  

Чтобы настроить таргетинг на обратное, мы просто хотим настроить таргетинг на изображения с классом .copy и просто вызвать .remove() , чтобы удалить элемент. Здесь требуется примечание .live() (или .delegate() ), поскольку элементы генерируются после dom ready.

Пример кода на jsfiddle

Комментарии:

1. Я пытаюсь реализовать ваш код, но по какой-то причине он не работает. Я вставил простой скрипт класса переключения в свой html-заголовок, в тег script, и даже это не работает.

2. @Jason, убедитесь, что в документе все готово, $(function(){});

3. Упс, у меня не было jquery.js файл, связанный с документом. Я забыл, что работаю на странице, отличной от той, которая уже есть. Спасибо за всю вашу помощь!

4. Источник для элемента clone определяется именем класса. Однако у меня есть несколько экземпляров этого контейнера div, вызываемого этим классом. При создании клонирования создается клон для каждого экземпляра этого класса контейнера. Есть ли способ изолировать копию в этом конкретном контейнере?

5. Это должно быть возможно, если бы вы могли создать демонстрацию в jsfiddle, возможно, смогли бы предложить некоторую дополнительную помощь.

Ответ №2:

Взгляните на http://api.jquery.com/attr /

Ваш код должен быть примерно таким

 $(document).ready(function(){
 //need to use live to have newly generated images bind to the click
 $('img').live('click', function(){ 
  $('body').append('<img src="' $(this).attr('src') '" />');
 });
});
  

Ответ №3:

Используйте .attr() метод jquery

 .attr('src', value); // to set value
.attr('src');        // to get value


$(document).ready(function(){

    $("img").bind("click", function() {

          $(document.createElement("img"))
        .attr({ src: $(this).attr('src'); }).appendTo(this.parent());;
    });
});