Пустой конкретный div с тем же классом нескольких других в jQuery

#jquery

#jquery

Вопрос:

У меня есть эта проблема, я генерирую окно (div с классом window) каждый раз, когда нажимается ссылка, это код для этого:

 $(".getWindow").live('click',function(){
    $('#desktop').append('<div class="window"><span class="close">x</span>Well ' $(this).attr('well') '<div id="screen"><img src="assembled_colors.jpeg" class="drag-image"  id="draggable"/></div></div>');
    $('.drag-image').draggable();
    $('.window').draggable();
});
  

Затем, каждый раз, когда нажимается «x» во второй строке моего кода, я пытаюсь закрыть окно, делая это:

 $('.close').live('click', function(){
    $(this).parent().empty();
});
  

Это закрывает только то, что находится внутри окна, но не само окно, мой следующий подход заключался в том, чтобы сделать это:

 $('.close').live('click', function(){
    $(this).parent().parent().empty();
});
  

Который закрывает все открытые окна. Не могли бы вы помочь мне, как закрыть только окно, содержащее нажатую кнопку x?

Заранее спасибо!

Ответ №1:

Попробуйте:

 $('.close').live('click', function(){
    $(this).parent().remove();
});
  

Причина использования remove() вместо empty() заключается в том, что empty() повлияет на то, что содержится в вашем родительском элементе, тогда как remove() удалит родительский элемент из DOM. Вот почему вы удаляете только содержимое внутри окна, а не само само окно.

Ответ №2:

.empty() просто очищает содержимое выбранного элемента.
.remove() удаляет элемент из DOM.

Я также предлагаю использовать closest , поэтому он все равно будет работать, если позже вы введете некоторые дополнительные элементы, которые переносят кнопку закрытия

 $('.close').live('click', function(){
    $(this).closest('.window').remove();
});
  

Ответ №3:

Вы должны изменить .empty() на .remove()

 $('.close').live('click', function(){
    $(this).parent().remove();
});