0

私は .ajaxComplete をリンク クリック イベントに関連付けており、一度だけ起動する必要があります。

$(document).delegate('.links', 'click', function(evt) {
    evt.preventDefault();
    var origanalUrl = $(this).attr('href');
    var hrefRegEx = /^(^\/?{[A-Za-z\_]*\/?)?([A-Za-z\_]+)(\.php)$/
    var hashUrl2 = origanalUrl.replace(hrefRegEx, '$2');
    var hashUrl = '#' + hashUrl2;
        var urlExt = ' #ajaxTarget';
        var newUrl = origanalUrl + urlExt;
        if(!$(hashUrl).html() && hashUrl != '#index') {
            $(hashUrl).load(newUrl).ajaxComplete(function(event, XMLHttpRequest, ajaxOptions) {
                newMain = $(hashUrl);
                newHeight = newMain.outerHeight();
                alert(newHeight);
                $('#textBox_main').animate({
                    height: newHeight
                    }, 500, function() {
                    newMain.fadeIn(500);
                });
                oldMain = newMain;
            });
        } else {
            isLoaded = true;
        }

最初のクリックは問題ありませんが、追加の各クリックは次の ajaxComplete 呼び出しでスタックします。これを防ぐにはどうすればよいですか?

4

1 に答える 1

0

要素 $(hashUrl) の「ajaxComplete」イベントにコールバックをアタッチしていました。(2 回目にクリックすると、別のハンドラーがアタッチされた、など)

そのコールバック関数をロードに渡してみてください。このような:

$(hashUrl).load(newUrl, function(response, status, xhr) {...} );
于 2012-09-07T18:16:10.587 に答える