Как удалить только теги, добавленные с помощью append () в JQuery - PullRequest
1 голос
/ 03 августа 2009

У меня есть div, который появляется при наведении мыши, и я вставляю некоторый контент, используя html () И я хочу, чтобы какая-то часть кода осталась без манипуляций.

<div id="pop_div" ><span>X</span></div>


$("#team_div > ul img").bind('mouseenter',function(){
  $("#pop_div").html('<img src="' + img + '"/>' + content );
 });

и онклик, я прячу див.

$('#pop_div span').click(function(){
  $("#pop_div").hide();
});

Моя проблема в том, что я не могу использовать приведенный ниже код, потому что jquery не назначает события этому тегу

$("#pop_div").html('<span>X</span><img src="' + img + '"/>' + content );

(я не могу использовать плагин livequery)

Я ценю ваши комментарии.

Ответы [ 2 ]

1 голос
/ 03 августа 2009

CMS это правильно. Дополнительно, начиная с jQuery 1.3, вы можете связать ваше событие с живой функцией , которая свяжет событие со всеми текущими и будущими элементами.

$('#team_div > ul img').live('mouseenter',function(){
  $('#pop_div img').attr('src', img); // set the image source
  $('#pop_div #content').html(content); // display the content
});
1 голос
/ 03 августа 2009

Вы заменяете все содержимое вашего #pop_div, когда вы вставляете HTML-код, создаются новые элементы DOM, поэтому событие не связывается.

Элемент span удален из DOM, а связанные с ним события больше не работают.

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

<div id="pop_div" >
  <span>X</span>
  <img/>
  <div id="content"></div>
</div>

В вашем мышином центре:

$('#team_div > ul img').bind('mouseenter',function(){
  $('#pop_div img').attr('src', img); // set the image source
  $('#pop_div #content').html(content); // display the content
});

Источник изображения изменяется, и переменная content вставляется в '#content' div.

Ваш обработчик кликов останется таким, как сейчас, потому что на элемент span это не влияет.

...