3

ajaxを使用して、スレッドをお気に入りにするボタンを作成しようとしています。ただし、お気に入りのスレッドでお気に入りの画像をフェードインおよびフェードアウトするだけで済みます。

次のエラーが発生します。 Uncaught SyntaxError: Unexpected token this

そしてそれは私のコード行11です: $(this + ' .is_favorited').fadeIn("slow");

完全なJavascriptソースは次のとおりです。

$(".do_favorite").live("click", function() {
    var item = $(this).closest(".box");
    var content = $(this).attr('data-id');
    alert(content);
    $.post( 'ajax.favorite.php?sid=' + content + '',
        $(this).serialize(),
        function(data) {
            if (data == "1") {
                // Favorite it
                $(this + ' .not_favorited').fadeOut("slow", function (
                    $(this + ' .is_favorited').fadeIn("slow");
                ));
            }else if (data == "2") {
                // Un-Favorite it
                $(this + ' .is_favorited').fadeOut("slow", function (
                    $(this + ' .not_favorited').fadeIn("slow");
                ));
            }else {
                alert("DER SKETE EN FEJL DU");
            }
        }
    );
    return false;
});

thisクリックしたものだけをフェードさせるために、私が本当に使用する必要があるので、誰かがこれを理解するのを手伝ってくれることを願っています。

4

6 に答える 6

4

セレクターでコンテキストthisとして渡すか、でfind()関数を使用する必要があります。$(this)

変化する

 $(this + ' .is_favorited').fadeOut("slow", function (

$('.is_favorited', this).fadeOut("slow", function (

コンテキストの背後で呼び出されるfind()メソッドを使用します。

$(this).find('.is_favorited').fadeOut("slow", function (

編集

thispost関数でクラスdo_favoriteを使用してイベントソース要素を参照する場合は、で参照できないため、一時変数に配置します。post

$(".do_favorite").live("click", function() {
    var item = $(this).closest(".box");
    var content = $(this).attr('data-id');
    alert(content);
    do_favorite_OBJECT = $(this);
    $.post( 'ajax.favorite.php?sid=' + content + '',
        do_favorite_OBJECT.serialize(),
        function(data) {
            if (data == "1") {
                // Favorite it
                $('.not_favorited', do_favorite_OBJECT).fadeOut("slow", function (
                    $('.is_favorited', do_favorite_OBJECT).fadeIn("slow");
                ));
            }else if (data == "2") {
                // Un-Favorite it
                $('.is_favorited', do_favorite_OBJECT).fadeOut("slow", function (
                    $('.not_favorited', do_favorite_OBJECT).fadeIn("slow");
                ));
            }else {
                alert("DER SKETE EN FEJL DU");
            }
        }
    );
    return false;
});
于 2013-01-08T09:23:19.267 に答える
4

あなたは次のように書くことができます:

$(this).find('.not_favorited')
于 2013-01-08T09:23:56.980 に答える
2

このようにあなたの「これ」を保存します

    $(".do_favorite").live("click", function() {
        var me = $(this);
        var item = me.closest(".box");
        var content = me.attr('data-id');
        alert(content);
        $.post( 'ajax.favorite.php?sid=' + content + '',
        me.serialize(),
        function(data) {
            if (data == "1") {
            // Favorite it
            me.find(' .not_favorited').fadeOut("slow", function (
                me.find('.is_favorited').fadeIn("slow");
            ));
            }else if (data == "2") {
            // Un-Favorite it
            me.find('.is_favorited').fadeOut("slow", function (
                me.find('.not_favorited').fadeIn("slow");
            ));
            }else {
            alert("DER SKETE EN FEJL DU");
            }
        }
        );
        return false;
    });
于 2013-01-08T09:25:29.103 に答える
1

使用する:

$(".is_favorited", this);

また

$(this).find(".is_favorited");
于 2013-01-08T09:25:03.643 に答える
1

thisコールバックの内部は、$.postあなたが思っているHTML要素ではありません。を呼び出す前に、要素を変数に保存する必要があります$.post

于 2013-01-08T09:27:37.443 に答える
1

使用するだけです:

$(this).find('.not_favorited')
于 2013-01-08T09:33:31.883 に答える