0

我想将一个变量传递给 .load() 函数,而不是 URL,而是之后会发生的函数。

正如您在下面看到的,我有一个 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 Object ..

在代码中,您再次尝试将其转换为jQuery 对象

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