使用removeClass()时jQuery不删除“类”属性名

时间:2013-05-02 12:43:43

标签: jquery

我写了一个“收藏”功能(几乎完全是Stefan Hoth和他之前的article的回复),这在很大程度上是在工作。但是,它很古怪。

首先,在点击页面后,收藏夹按钮需要在开始工作前按两次,之后只需单击一下即可在状态之间切换。

其次,removeClass()方法似乎很乐意删除class =“active”属性的“active”部分,这很奇怪。

function favouriteAdd (){
    $.ajax({
        url: base_url + "bookmarks/jq_set_bookmark_as_favourite/add/" + $("a#favourite").data("bookmark"),
        success: function () {
            $('a#favourite')
            .addClass('active')
            .attr('title', "Remove as Favorite")
            .unbind('click')
            .bind('click', favouriteRemove);
        }
    });
}

function favouriteRemove (){
    $.ajax({
        url: base_url + "bookmarks/jq_set_bookmark_as_favourite/remove/" + $("a#favourite").data("bookmark"),
        success: function () {
            $('a#favourite')
            .removeClass('active')
            .attr('title', "Add as Favorite")
            .unbind('click')
            .bind('click', favouriteAdd);
        }
    });
}

if($('a#favourite').hasClass('active') == true) {
    $('a#favourite').bind('click', favouriteRemove);
} else {
    $('a#favourite').bind('click', favouriteAdd);
}

我猜这个解决方案对于初学者来说是初等的,但是在jQuery方面,我很遗憾地处于初级阶段。

1 个答案:

答案 0 :(得分:3)

试试这个,但要小心,因为这将删除整个类属性,如果你有其他类,那么它们将被擦除:

$('a#favourite').removeAttr("class");

另外,尝试将if语句放在ajaxComplete函数

$(document).ajaxComplete(function() {
   // code here
 });