用jquery交换类名

时间:2013-10-21 18:57:16

标签: jquery

我有一个名为“收藏夹”的小图标,当我点击它时,我调用一个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");
    });

基本上我想在每次点击时更改图标。但是,当我添加类(最喜欢的)时,从不调用喜欢的类的事件处理程序,它总是不受欢迎

我该怎么办?

谢谢

2 个答案:

答案 0 :(得分:1)

您实际上不必动态绑定事件。如果关于元素类的语句可以正常工作。

$('#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");
});

答案 1 :(得分:0)

在动态添加元素上设置事件时,您需要委派事件。见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");
    });