0

selectedremoveClassは、以下のjsのクラスを削除しませんdiv.upvoteが、addClass()は正常に機能します。何故ですか?

$(document).ready(function () {
"use strict";

    $('div.upvote').click(function () {
        var id = $(this).parents('li.book').attr('id');
        var vote_type = 'up';

        if ($(this).hasClass('selected')) {
            var vote_action = 'recall-vote';
            $.post('/b/vote/', {id: id, type: vote_type, action: vote_action}, function (response) {
                if ($.isNumeric(response)) {
                    $('li#' + id)
                        .find('div.upvote')
                        .removeClass('selected');
                    $('div.vote-tally span.num').html(response);
                }
            });
        } else {
            var vote_action = 'vote';
            $.post('/b/vote/', {id: id, type: vote_type, action: vote_action}, function (response) {
                if ($.isNumeric(response)) {
                    $('li#' + id)
                        .find('div.upvote')
                        .addClass('selected');
                    $('div.vote-tally span.num').html(response);
                }
            });
        }
    });
}
4

2 に答える 2

2
$(document).ready(function () {
    "use strict";

    $('div.upvote').click(function () {
        var id = $(this).parents('li.book').attr('id');
        var vote_type = 'up';


        if ($(this).hasClass('selected')) {
            var vote_action = 'recall-vote';
            (function (response) { // skip ajax, just call success callback
                if ($.isNumeric(response)) {
                    $('li#' + id)
                            .find('div.upvote')
                            .removeClass('selected');
                    $('div.vote-tally span.num').html(response);
                }
            }(123)); // fake numeric response
        } else {
            var vote_action = 'vote';
            (function (response) {
                if ($.isNumeric(response)) {
                    $('li#' + id)
                            .find('div.upvote')
                            .addClass('selected');
                    $('div.vote-tally span.num').html(response);
                }
            }(123));
        }
    });
}) // ) missed

HTML:

<li id="li-id" class="book">
    <div class="upvote selected">upvote</div>
</li>​

偽のデータを使用すると、すべて正常に機能します。したがって、数値以外の応答または欠落した)に問題があります

于 2012-04-08T09:18:08.580 に答える
0

一部のブラウザでトグル機能にバグがあることを覚えています。そのため、トグルの代わりにremoveClassを使用できます

于 2012-04-08T09:02:22.273 に答える