将变量传递给.load函数

时间:2012-11-05 16:46:36

标签: jquery

我想将变量传递给.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);
            }

        }
    });
};

2 个答案:

答案 0 :(得分: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);
            }

        }
    });
};

答案 1 :(得分:1)

在$ next

之前删除 $()
$( $next )

应该是

$next

因为$ next已经是一个jQuery对象..

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

if( $pag_next != '') {
    $next.attr('href', $pag_next);
}
if( $pag_prev != '') {
    $prev.attr('href', $pag_prev);
}