Всем привет. Есть код Код (Javascript): $('.users_sub').click(function(e) { e.preventDefault; var id = $(this).attr('id'); var element = $(this); console.log('sub'); $.ajax({ url: 'index.php?route=profile/subscribe', type: 'post', data: "data=" + id, success: function(response) { console.log(response); if (response === '1') { element.removeClass('users_sub'); element.addClass('users_unsub'); element.text('Unsubscribe'); } } }) }); $('.users_sub').on('click', function(e) { e.preventDefault; var id = $(this).attr('id'); var element = $(this); console.log('unsub'); $.ajax({ url: 'index.php?route=profile/subscribe', type: 'post', data: "data=" + id, success: function(response) { console.log(response); if (response === '1') { element.removeClass('users_sub'); element.addClass('users_unsub'); element.text('Unsubscribe'); } } }); }); Проблема в том, что после изменение класса элемента он не воспринимается jquery. Т.е. после нажатия на элемент с классом users_sub с последующим удаление и добавлением класса users_unsub клик на этот элемент идет так как на элемент с классом users_sub. В инспекторе смотрел классы изменяются.
@Alesto, во-впервых, не понятно зачем у вас два абсолютно одинаковых обработчика, но спишем это на случайность копипаста. Во-вторых. обработчик события устанавливается на элемент, а не на его класс. Для динамически добавленных или измененных элементов, необходимо устанавливать делегированную обработку событий. Код (Javascript): $(document).on('event_type', 'element_selector', handler);
Смотрим в песочнице Код (Javascript): $(document).on('click', '.users_sub', function(e) { $(this) .text('Unsubscribe') .toggleClass('users_sub users_unsub'); }); $(document).on('click', '.users_unsub', function(e) { $(this) .text('Subscribe') .toggleClass('users_sub users_unsub'); });
Код (Javascript): $(document).on('click', '.users_sub', function(e) { e.preventDefault; var id = $(this).attr('id'); var element = $(this); console.log('unsub'); $.ajax({ url: 'index.php?route=profile/subscribe', type: 'post', data: "data=" + id, success: function(response) { console.log(response); if (response === '1') { element.removeClass('users_sub'); element.addClass('users_unsub'); element.text('Unsubscribe'); } } }); });