0

我写了一个“最喜欢的”功能(几乎完全是对 Stefan Hoth 和他对前一篇文章的回复),这在很大程度上是有效的。然而,这很古怪。

首先,访问页面后,收藏按钮需要按两次才能开始工作,之后只需单击即可在状态之间切换。

其次,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 时,我很遗憾地处于初级课程中。

4

1 回答 1

3

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

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

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

$(document).ajaxComplete(function() {
   // code here
 });
于 2013-05-02T12:46:52.340 回答