0

私はJScrollを利用するjsファイルに取り組んでいます。jsp-scroll-yイベントのコールバックは、次の関数で定義されています

 function initWall() {
     //callback from jqueryscrollpane
     Scroll_TimeLine_Instance = function (event, scrollPositionY, isAtTop, isAtBottom){     
         //get more content
         if (isAtBottom) {
             GetMoreDate(objid, vwrsid, secid, orgid, incflwr, qty, mintlid, maxtlid, successGetTimeLineCallback, failureGetTimeLineCallback);
         }
     }();
}

このコールバックを jsScroll にバインドする別の関数が定義されています。

function reapplyScroll() {
     Utilities.DestroyScrollBar($(_target).closest('.widgetBody'));
     Utilities.ApplyScrollBar($(_target).closest('.widgetBody'), false, Scroll_TimeLine_Instance);
            }

Utilities.ApplyScrollBar = function (element, showScrollBar, scrollCallback) {
    $(element).jScrollPane({
        horizontalGutter: 5,
        verticalGutter: 5,
        'showArrows': false
    }).bind('jsp-scroll-y', scrollCallback);

    if (!showScrollBar) {
        $(element).find('.jspDrag').hide();
    }
}

コールバックは呼び出されませんでした。これは未定義であることが原因であることがわかりました。()を削除するとImmediate object initialization; 関数の作成後から、すべて正常に動作します。

誰でもこれを説明できますか?とにかくすぐに呼び出された理由がわからないので、これは作成者のエラーであると思います。なぜこの変数が未定義になるのかわかりませんか?

4

1 に答える 1

0

undefined関数(すぐに呼び出される)がreturn値を持たないためです

したがって、これは確かにライブラリのバグのようです..


最後に を削除するか、();すぐに呼び出したい場合は、次の行で呼び出します

function initWall() {
     //callback from jqueryscrollpane
     Scroll_TimeLine_Instance = function (event, scrollPositionY, isAtTop, isAtBottom){     
         //get more content
         if (isAtBottom) {
             GetMoreDate(objid, vwrsid, secid, orgid, incflwr, qty, mintlid, maxtlid, successGetTimeLineCallback, failureGetTimeLineCallback);
         }
     }; /// this is assigning the function to our variable
     Scroll_TimeLine_Instance (); // this is the invokation
}
于 2013-10-11T13:53:20.970 に答える