как удалить элемент, созданный с jQuery?

я имею, пишут этот блок кода в jQuery для создания трех элементов после некоторых событий

$('body').append(
tmp= $('
') ); $('
').appendTo("#tmp"); $('
').appendTo('#tmp');

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

$("#close").click(function(e){

e.preventDefault();
$("#tmp").remove(); 
//$("#overlay").remove(); 
});

и после того, как я нажимаю близкое отделение, отмечающее, происходят! что случилось с моим кодом?

вот пример онлайн: mymagazine.ir/index.php/main/detail/36 - найдите, "вот предложение" проблемы jQuery в сайте, потому что язык сайта является персидским

5
задан mehdi 11 June 2010 в 15:36
поделиться

3 ответа

вам нужно добавить обработчик клика на #close после вставки элемента в документ.

edit предоставляю запрошенное демо; проверено в ff36:

<html>
<head>
 <title>whatever</title>
 <style type="text/css">
   div {
     border: 1px solid black;
     padding: 0.3em;
   }
 </style>
 <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
 <script type="text/javascript">
  $(document).ready(function ()
  {
    $('body').append($('<div id="tmp"/>'));
    $('<div id="close">click me</div>').appendTo("#tmp");   
    $('<div id="box-results">contents</div>').appendTo('#tmp');
    $('#close').bind('click', function ()
    {
      $('#tmp').remove();
      return false;
    });
  });
 </script>
</head>
<body>
</body>
</html>

edit

измените код вашего плагина с

$.ajax({
    ...
    success: function ()
    {
        $('<div id="close"/>').appendTo($('#tmp'));
    }
});
$('#close').click(function (e) ...);

на

$.ajax({
    ...
    success: function ()
    {
        $('<div id="close"/>')
            .click(function (e) ...)
            .appendTo($('#tmp'))
        ;
    }
});
11
ответ дан 18 December 2019 в 10:42
поделиться

Вы должны использовать метод прямой трансляции вместо щелчка. Это позволит вам добавлять / удалять элементы без изменения их поведения

$("element").live("click", function() { /*do things*/ });
2
ответ дан 18 December 2019 в 10:42
поделиться

Поскольку элементы с идентификаторами #tmp и #close создаются динамически, вы не можете использовать щелчок на них напрямую, вам понадобится live () вместо метода:

$("#close").live('click', function(e){    
  $("#tmp").remove(); 
  return false;
});

Live () Описание:

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

Как видно, ваш элемент создается динамически (в будущем), а не при загрузке страницы.

Подробнее здесь

3
ответ дан 18 December 2019 в 10:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: