@Roman_S1

Почему не работает привязка событий в jquery к элементам массива?

Пытаюсь сделать так, чтобы формы автоматически находились на странице и к ним привязывалcя обработчик событий, но возникла проблема, когда на странице находится несколько форм. Такой код по какой-то причине не хочет регистрировать все обработчики, а вместо этого регистрирует на все кнопки обработчик для события, которое находится последним в массиве.

var actions = ["action1", "action2"]

for (var i = 0; i < actions.length; i++) {
    var action = actions[i];

    $('button#' + action + '_btn').bind('click',
        function () {
            sendForm(action);
        });
}


В чем может быть проблема? Подскажите, пожалуйста
  • Вопрос задан
  • 267 просмотров
Решения вопроса 2
@MrTimon
Тоже не вижу проблемы в данном коде, по крайней мере на первый взгляд, но могу предложить немножко другую реализацию. Если вы поставите один класс для всех таких кнопок то можно сделать как-то так :

$('button.class_btn').bind('click', function () {
    var action = $(this).attr('id').slice(0,-4);
    sendForm(action);
 });


Должно работать.

ЗЫ Можно еще поставить проверку на наличие action в массиве событий
Ответ написан
@Roman_S1 Автор вопроса
Спасибо всем, нашел ответ в оф. документации.
Нужно было просто передать параметры в функцию более умным способом.

var actions = ["action1", "action2"];

for (var i = 0; i < actions.length; i++) {
	$('button#' + actions[i] + '_btn').on('click',
		{ action : actions[i] },
		function (event) {
			alert(event.data.action);
			sendForm(event.data.action);
		});
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Stepanya
У Вас несколько кнопок с одинаковым уникальным id.
Ответ написан
@vshvydky
а почему нельзя сделать обработчик на группу элементов, а дальше по event.target получать активный элемент и на этом избавиться от геморроя?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы