.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, массив уменьшается, по новому массиву происходит перерисовка, но уже в новом отображении перестает работать обработчик нажатия на див и, как следствие, процесс удаления. С чем это может быть связанно? |
$(" .orderItem").live('click',fn)и повтор биндинга не нужен П.С. А связано с тем что рисуются новые елементы поверх старых и при клике вы не попадаете на старых или я не понял выполнение скрипта. |
Рисуется не поверх, при вызове функции происходит очищение содержащего контейнера $("#moveble").empty();
Выходит, что динамически подгружаемые элементы в первый раз обрабатывают click, а после зачистки и новой загрузки уже нет. Читаю на счет $().live, дочитываю еще, но думаю это то, что нужно!! |
Часовой пояс GMT +3, время: 01:56. |