0

reinitialise()( function による)関数の適切な呼び出しの前に、reinitializeScrollbar()関数が実行されます。誰にも理由はありますか?

$(document).ready(function () {

    $('.scrollContainer').jScrollPane();

    $('[id^=arr]').click(function (event) {
        var id = $(this).attr('id');
        var index = id.substring(4);
        //alert('Gib ID aus: ' +index);
        var skillDesc = "#skillDescript" + index;

        var arrTo2 = "#arr_" + index + ".arrow2";
        var arrTo1 = "#arr_" + index + ".arrow1";

        //alert('Gib skillDesc aus: ' +skillDesc);
        event.preventDefault();
        if ($(skillDesc).css("display") != "none") {
            $(skillDesc).slideUp(800, reinitializeScrollbar());
            console.log("ROLL IN!");
            $(arrTo2).toggleClass("arrow2", "arrow1");
        } else {
            $(skillDesc).slideDown(800, reinitializeScrollbar());
            console.log("ROLL OUT!");
            $(arrTo1).toggleClass("arrow2");
        }
    });

    function reinitializeScrollbar() {
        $('.scrollContainer').data('jsp').reinitialise();
        console.log("damn you");
    }
});
4

5 に答える 5

3

イベント ハンドラーをセットアップしようとするときに関数を呼び出しています。

$(skillDesc).slideUp(800, reinitializeScrollbar());

代わりに、関数自体をパラメーターとして渡す必要があります。

$(skillDesc).slideUp(800, reinitializeScrollbar);
于 2013-09-17T16:47:00.170 に答える
2

現在行っていることは、 を追加して、関数をすぐに呼び出すこと()です。これにより、すぐに関数が呼び出され、その関数呼び出しの結果が取得され、その値がコールバックとして渡されます。関数自体を渡したいので、関数を呼び出すのではなく、単純にコールバックとして渡します。

$(skillDesc).slideUp(800, reinitializeScrollbar);
于 2013-09-17T16:47:05.427 に答える
1

正しい構文は次のとおりです。

$(skillDesc).slideUp(800, reinitializeScrollbar);
于 2013-09-17T16:44:59.457 に答える
0

これはおそらく、reinitializeScrollbar()代わりにコールバックとして割り当てたい関数を実際に呼び出しているためです。

これで解決するはずです:

$(document).ready(function () {

    $('.scrollContainer').jScrollPane();

    $('[id^=arr]').click(function (event) {
        var id = $(this).attr('id');
        var index = id.substring(4);
        //alert('Gib ID aus: ' +index);
        var skillDesc = "#skillDescript" + index;

        var arrTo2 = "#arr_" + index + ".arrow2";
        var arrTo1 = "#arr_" + index + ".arrow1";

        //alert('Gib skillDesc aus: ' +skillDesc);
        event.preventDefault();
        if ($(skillDesc).css("display") != "none") {
            $(skillDesc).slideUp(800, reinitializeScrollbar);
            console.log("ROLL IN!");
            $(arrTo2).toggleClass("arrow2", "arrow1");
        } else {
            $(skillDesc).slideDown(800, reinitializeScrollbar);
            console.log("ROLL OUT!");
            $(arrTo1).toggleClass("arrow2");
        }
    });

    function reinitializeScrollbar() {
        $('.scrollContainer').data('jsp').reinitialise();
        console.log("damn you");
    }
});
于 2013-09-17T16:47:32.223 に答える
0

使用する

$(skillDesc).slideUp(800, reinitializeScrollbar);

また

$(skillDesc).slideUp(800, function(){ reinitializeScrollbar() });
于 2013-09-17T16:46:08.473 に答える