0

私は "お気に入り" 機能 (ほぼ完全に Stefan Hoth と以前の記事に対する彼の返信に特化した機能) を作成しましたが、これはほとんどの場合機能しています。しかし、それは風変わりです。

まず、ページにアクセスした後、お気に入りボタンが機能する前に 2 回押す必要があります。その後は、1 回のクリックで状態を切り替えることができます。

第 2 に、removeClass() メソッドは、class="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 に答える