0

URLではなく.load()関数に変数を渡したいのですが、後で発生する関数に渡します。

以下に示すように、if/elseステートメントがあります。その中に変数を渡したい。現時点では、これの外側にある2つの変数が$nextあり$prev、これらはメソッドの外側にあります。それらをグローバルにしようとしましたが、うまくいきません。理想的には、これらを数回使用するので変数にしたいです。

var $next = $('.nav.next');
var $prev = $('.nav.prev');


method.open = function(settings) {
    var $link_url = settings.url + ' ' + settings.element;

    $($modal_inner).load( $link_url, function(response, status, xhr ) {
        if (status == 'error') {
        var msg = 'Sorry but there was an error: ';
            $( '#error' ).appendTo( '.modal_inner' );
            $( '#error' ).html( msg + xhr.status + " " + xhr.statusText) ;
        }
        else {
            // Get pagination URL's
            var $pag_next = $(this).find('#post').attr('data-pag-next');
            var $pag_prev = $(this).find('#post').attr('data-pag-prev');

            // If URL's add URL and show 
            if( $pag_next != '') {
                $( $next ).attr('href', $pag_next);
            }
            if( $pag_prev != '') {
                $( $prev ).attr('href', $pag_prev);
            }

        }
    });
};
4

2 に答える 2

3

親スコープでは、親関数のローカル変数または親関数の引数のいずれかの変数を使用できます。たとえば、このようにメソッドに渡した場合nextprevハンドラー関数openでそれらにアクセスできます。load

method.open = function(settings, next, prev) {
    var $link_url = settings.url + ' ' + settings.element;

    $($modal_inner).load( $link_url, function(response, status, xhr ) {
        // you can access next and prev from your parent scope here
        if (status == 'error') {
        var msg = 'Sorry but there was an error: ';
            $( '#error' ).appendTo( '.modal_inner' );
            $( '#error' ).html( msg + xhr.status + " " + xhr.statusText) ;
        }
        else {
            // Get pagination URL's
            var $pag_next = $(this).find('#post').attr('data-pag-next');
            var $pag_prev = $(this).find('#post').attr('data-pag-prev');

            // If URL's add URL and show 
            if( $pag_next != '') {
                $( $next ).attr('href', $pag_next);
            }
            if( $pag_prev != '') {
                $( $prev ).attr('href', $pag_prev);
            }

        }
    });
};
于 2012-11-05T16:48:04.000 に答える
1

$next の前の$()を削除します

$( $next )

する必要があります

$next

$next はすでに jQuery オブジェクトであるため..

コードでは、それをjQuery オブジェクトに変換しようとしています

if( $pag_next != '') {
    $next.attr('href', $pag_next);
}
if( $pag_prev != '') {
    $prev.attr('href', $pag_prev);
}
于 2012-11-05T16:49:17.987 に答える