Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.01.2011, 16:58
Интересующийся
Отправить личное сообщение для wc3banderlog Посмотреть профиль Найти все сообщения от wc3banderlog
 
Регистрация: 30.01.2011
Сообщений: 23

.append() и перестает работать обработчик
Добрый вечер! Небольшой скриптик.
В цикле из массива при помощи .append() создаются <div>`ы.
// Функция drawBascet
orderCount = orders.id.length; // Получаем количество элементов
for (var i = orderCount ; i > 0 ; i--)  // Начинаем обратный цикл
			{
				$("#moveble").append("<div class='orderItem' id='" + i +"x'>bla-bla-bla</div>");
			}

При клике необходимо удалить DIV. Механизм:
$(" .orderItem").click(function(){
		var id = parseInt ( $(this).attr("id") ); //Получаем Id элемента в массиве

		orders.id.splice( id-1, 1 ); //Удаляем этот элемент в массиве

		orderCount = orders.id.length; 

		drawBascet( orderCount ); //Вызываем drawBascet снова. Она удаляет предыдущее содержимое $("#moveble").empty(); 
//и заполняет таким же образом опять
	})


Первый вызов drawBascet происходит после окончательной загрузки страницы
$(function()
{
drawBascet( orderCount );
})

Щелкаем на DIV, массив уменьшается, по новому массиву происходит перерисовка, но уже в новом отображении перестает работать обработчик нажатия на див и, как следствие, процесс удаления.

С чем это может быть связанно?
Ответить с цитированием
  #2 (permalink)  
Старый 30.01.2011, 18:37
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

$(" .orderItem").live('click',fn)
и повтор биндинга не нужен

П.С. А связано с тем что рисуются новые елементы поверх старых и при клике вы не попадаете на старых или я не понял выполнение скрипта.
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Ответить с цитированием
  #3 (permalink)  
Старый 30.01.2011, 18:54
Интересующийся
Отправить личное сообщение для wc3banderlog Посмотреть профиль Найти все сообщения от wc3banderlog
 
Регистрация: 30.01.2011
Сообщений: 23

Рисуется не поверх, при вызове функции происходит очищение содержащего контейнера $("#moveble").empty();

Выходит, что динамически подгружаемые элементы в первый раз обрабатывают click, а после зачистки и новой загрузки уже нет.

Читаю на счет $().live, дочитываю еще, но думаю это то, что нужно!!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
После выполнения операции скрипт перестает работать HETmozgov jQuery 6 04.11.2010 18:06
После первого действия скрипт перестает работать cyberx jQuery 6 12.06.2010 22:04
Как "обмануть" обработчик события? itPiligrim Events/DOM/Window 0 13.05.2010 22:55
перестает работать lightbox после .load(); toha.chan jQuery 1 14.04.2010 16:37
Обработчик события: как делает jquery? Shasoft jQuery 35 22.04.2009 09:41