2012-07-03 3 views
0

Я пытаюсь добавить div и промежуток к изображению на клик, а затем удалять его по клику.jquery append function is not working

<div id="gallery" align="center">  

     <img src="http://www.frontpagejunky.com/wp-content/uploads/2011/05.jpg" class="img-view" width="150px" height="150px" /> 
</div> 

JQuery:

  $(document).ready(function(){ 
       $('.img-view').click(function(){ 
        var img=$(this).after('<span id="close">X Close</span>').wrap("<div id='pop-up' style='display:block'/>").clone(); 
        $('#gallery').append(img); 
       }); 

      $('#close').live("click",function(){ 
       $('#pop-up').remove(); 
        $('#close').remove(); 

      }); 

     }); 
    </script> 

Проблема, которую я имею, что продолжительность не получить завернутые в DIV, но только образ делает, а пролет добавляется только после того, как изображение завернуто. Вторая проблема - когда я нажимаю #close, div и кнопка исчезают, но когда я снова нажимаю на .img-view, они не регенерируются/не появляются. почему это происходит?

UPDATE

 $(document).ready(function(){ 
       $('.img-view').click(function(){ 
        var img=$(this).clone(); 
        img= img.after('<span class="close">X Close</span>'); 
        img=img.wrap("<div class='pop-up' style='display:block'/>"); 
        $('#gallery').append(img); 
       }); 

      $('.close').live("click",function(){ 
       $('.pop-up').remove(); 
        $('.close').remove(); 

      }); 

     }); 

Но теперь всплывающее DIV не обернуть элемент изображения!?!

+0

$ не требуется с IMG в $ (IMG). – vijay

+0

Осторожно! вы несколько раз используете '# pop-up' и' # close'. Идентификаторы должны быть уникальными. Их нельзя повторить. Вы можете использовать класс вместо ids и находить ближайшие '.pop-up' и' .close' при удалении. – Imdad

+0

Я знаю, но я хочу, чтобы изображение всплывало один раз и закрывалось ... Я не хочу, чтобы на экране отображались два элемента: –

ответ

1

Вы не можете использовать обертку на элемент, который не в йот. Вы можете либо создать новый элемент, который будет вашим оберткой, так и привязать все к этой оболочке или сначала вставить свой img в dom, а затем обернуть его.

Вы должны сделать что-либо из этих 2-й вариант, первым из которых лучше всего, прежде чем добавить промежуток с X.

+0

Да, я думал, что это было странно, когда я попытался обернуть два элемента сразу –

1

Используйте этот один:

$('#gallery').append(img); 

Вместо:

$('#gallery').append($(img)); 
+0

и почему, когда я удаляю элемент, я не могу его снова добавить? –

+0

Нет ограничений, которые вы можете добавить, но можете ли вы разместить html и jquery-код, как вы пытаетесь добавить и удалить? – Unknown

+0

Если у вас есть новый, его лучше пойти с новым вопросом .. – Unknown

1

Ваше сцепление откусил,
$(this).after('<span id="close">X Close</span>') возвращает $(this) (который есть образ), так $(this).after('<span id="close">X Close</span>').wrap("<div id='pop-up' style='display:block'/>") обертывания DIV вокруг затем возвращается $(this),
$(this).after('<span id="close">X Close</span>').wrap("<div id='pop-up' style='display:block'/>").clone() возвращает клон $ (this)

Это может помочь

$(document).ready(function(){ 
    $('.img-view').on('click', function(e){ 
     $("<div id='pop-up' style='display:block'/>").appendTo('#gallery').append('<span id="close">X Close</span>').find('#close').append(this);   
     event.stopPropagation(); 
    }); 
    $('#close').live("click",function(){ 
     $(this).find('.img-view').appendTo('#gallery'); 
     $(this).parent().remove(); 
    }); 
}); 

EDIT

Причина этого не работает потому, что обработчик нажмите на # Закрыть был называться, поскольку он стал родителем .img-зрения, предотвратить это я добавил stopPropagation(), также изменил код, поэтому текст X Close удален.

FIDDLE

+0

lol..but Я хочу, чтобы изображение было помещено внутри поп-пу слишком, append (это) is not working –

+0

Это было не совсем понятно, я изменю его – Musa

+0

, который не работает, теперь он добавляет много близких кнопок внутри изображения, но они не работают, и нет изображения добавлено –