У меня есть маленький значок под названием "Избранное", и когда я нажимаю на него, я вызываю обработчик события jquery, чтобы изменить значок и изменить имя класса.
Но когда я нажимаю на него снова, он не переходит к обработчику события класса, который я добавил к нему, он возвращается к исходному обработчику событий
Это значок
<input style="float:right" type="image" name="unfavorite" id="unfavorite" class="unfavorite" src="images/unfavorite.png" />
и мой jquery:
$('.unfavorite').click(function()
{
$(this).removeClass('unfavorite');
$(this).addClass("favorite");
$(this).attr("src","images/favorite.png");
});
$('.favorite').click(function()
{
$(this).removeClass('favorite');
$(this).addClass("unfavorite");
$(this).attr("src","images/unfavorite.png");
});
так что в основном я хочу менять иконку каждый раз нажимаем. Но когда я добавляюClass (любимый), обработчик событий для любимого класса никогда не вызывается, он всегда идет к неприглядному
Что мне делать?
Спасибо
Вам не обязательно динамически связывать событие. Если утверждения класса элемента могут работать нормально.
$('#unfavorite').click(function()
{
$(this).toggleClass('unfavorite');
$(this).toggleClass("favorite");
if ($(this).hasClass("favorite"))
$(this).attr("src","images/favorite.png");
if ($(this).hasClass("unfavorite"))
$(this).attr("src","images/unfavorite.png");
});
Вы должны делегировать событие при настройке событий на динамически добавленные элементы. См. Http://api.jquery.com/on/. Посмотрите пример ниже:
$('body').on('click', '.unfavorite', function()
{
$(this).removeClass('unfavorite');
$(this).addClass("favorite");
$(this).attr("src","images/favorite.png");
});
$('body').on('click', '.favorite', function()
{
$(this).removeClass('favorite');
$(this).addClass("unfavorite");
$(this).attr("src","images/unfavorite.png");
});