3

Chromeで次のJavaScriptエラーが発生します:

RangeError:最大呼び出しスタックサイズを超えました[http:// localhost:5545 / Assets / js / jquery.min.js:2]

このclickイベントで:

$('.accept-answer-button').click(function() {
    var id = $(this).parent().parent().attr('id').replace('answer_', ''),
        b = this;
    if ($('.accepted').length > 0) $('.accepted').click();
    AP.AcceptAnswer(id, $(b));
});​

のコードAP.AcceptAnswer()は次のとおりです。

AP.AcceptAnswer = function(a, o) {
    $.getJSON('/assets/ajax/accept-answer', {
        qid: qid,
        answer: a
    }, function(data) {
        if (data.success == true) {
            if (data.type == 'accepted') {
                var title = o.attr('data-unaccept-title').replace('{t}', data.time);
                o.addClass('accepted').attr('title', title);
            }
            else if (data.type == 'unaccepted') {
                var title = o.attr('data-accept-title').replace('{t}', data.time);
                o.removeClass('accepted').attr('title', title);
            }
        }
        else {
            alert(data.error);
        }
    });
}; // end AP.AcceptAnswer()​

$('.accepted').click();ユーザーが別の回答を受け入れたい場合、現在受け入れられている回答(ある場合)を受け入れないようにするためだけに行っています。

4

1 に答える 1

2

クラス.accepted.accept-answer-buttonが同じ要素を指していないことを確認しますか?それらがそうである場合、これを行うときにクリックイベントを再帰的に発生させます。

$('.accepted').click(); 

$('.accepted').length > 0常に真の場合。

于 2012-08-19T03:34:49.407 に答える