1


0

キーダウンjqueryのバインド解除

左キーと右キーを押して、次または前のページから移動するメソッドを作成しました。 問題は、別のアルバムに変更しても、キーを押す方法が前のアルバムにバインドされているため、右キーを押すと、現在のアルバムと前のアルバムの両方の画像が変更されることです。

対象のドキュメントからキープレスのバインドを解除しようとしましたが、機能しなくなりました。

var doNext = function () {
    if (pageNumber >= totalPages - 1) {
        pageNumber = totalPages;
        //alert(pageNumber);
    }
    else if (pageNumber <= totalPages) {
        nextPage = pageNumber += 1;
        //alert(nextPage);
        $("select#page1").get(0).selectedIndex = nextPage;
        $("select#page2").get(0).selectedIndex = nextPage;


        $('#mangaImage').attr('src', data[nextPage]['imageLocation']);

        $("#mangaImage").load(function () {
            $('#mangaImage').attr('width', data[nextPage]['imageWidth']);
            $('#mangaImage').attr('height', data[nextPage]['imageHeight']);
            $('#contentInner').css("width", data[nextPage]['imageWidth'] + "px");
            $('#page').css("width", data[nextPage]['imageWidth'] + "px");
        });
    }
};

ここに上記の方法を使用するキーダウンコードがあります

$(document).keydown(function (e) {
    if (e.keyCode == 39) {
        alert("right pressed");
        doNext();
        return false;
    }
});

1 Answer


1


$("#mangaImage ")。load(function(){..});`を使用する代わりに、http://api.jquery.com/one/ [$(" #mangaImage ")を使用する必要があります。 .one( 'load'、function(){.. }); `]。 現在、キーを押すたびに新しいイベントハンドラーを追加しています。削除しないでください。