我想将变量传递给.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);
}
}
});
};
答案 0 :(得分:3)
您可以在父作用域中使用变量,可以是父函数的局部变量,也可以是父函数的参数。例如,如果您将next
和prev
传递到这样的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);
}