Перезапуск функции с each

Extremosa

Постоялец
Регистрация
11 Май 2015
Сообщения
211
Реакции
172
Есть функция, которая срабатывает при загрузке страницы для данных элементов.
Код:
function open() {
    $('a[data-toggle=\'image\']').each(function(index, element) {
        $('#' + $(element).attr('id') + ' #btn-image-add').on('click', function() {
            console.log('Порядковый номер: ' + index);
        });
    });
}
Но затем я вызываю другую функцию, в которой содержатся новые элементы из первой функции.
Код:
function image_add() ...
При нажатии на кнопку #btn-image-add каждый новый элемент повторяются ровно столько раз, сколько этих новых элементов я создал после него. Как исправить эту ошибку?
 
Ничего не понял, даже после пятого прочтения.
Предлагаю выложить код на jsfiddle.

Вижу ошибку #btn-image-add
Для просмотра ссылки Войди или Зарегистрируйся
UPD
Кажется понял. У вас добавляются новые события ON, одно накладывается на другое?
Выложите на jsfiddle и покажу как решать.
Тут надо либо удалять старые евенты ON, что не всегда удобно.
Либо надо вешать евент на родителя и использовать bubbling, через closest()
В соседней теме показывал, но фидлы удалены почему-то.
 
Последнее редактирование:
function open открывает изображения по нажатию кнопки #btn-image-add персонально для каждой картинки. Все работает. Но затем функцией function image_add я добавляю новые изображения и нужно перезапустить
function open чтобы она перебрала новые блоки с изображениями, иначе #btn-image-add не открывает новые изображения.
 
Что-то не получается, все с дублями выходит, когда нажимаю openImage Для просмотра ссылки Войди или Зарегистрируйся

Добавьте перед присвоением обработчика клика такую строчку:

$('#' + $(element).attr('id') + ' #btn-image-add').off("click");

Это разбиндит handler. Вот измененный jsfiddle Для просмотра ссылки Войди или Зарегистрируйся
 
Читаем внимательно что выше писал: потому что происходит ПОВТОРНОЕ навешивание события ON, чтобы этого не было надо либо удалять старое событие, либо вешать ОДИН раз на родителя.

Для просмотра ссылки Войди или Зарегистрируйся

Есть ещё вариант через ONCLICK.
Наверное это самое простое будет для вас
Для просмотра ссылки Войди или Зарегистрируйся
 
Назад
Сверху