2012-11-05 122 views
0

我想将一个变量传递给.load()函数,而不是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); 
      } 

     } 
    }); 
}; 

回答

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); 
      } 

     } 
    }); 
}; 
+0

感谢@ jfriend00,我不能完全得到这个工作,如果我有变量设置做我然后把它们在打开的方法调用? – zizther

+0

@zizther - 我不明白你的问题。任何你想在加载处理函数中访问的附加数据都可以作为参数传递给'open'方法。 – jfriend00

+0

你已经把下一个和prev放入负载处理程序,是变量调用还是你在其他地方引用它们? 也许我不是很理解它。 – zizther

1

旁边的$之前取出$()

$($next) 

应该

$next 

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

在代码,你再次尝试将其转换为一个jQu ERY对象

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

他甚至可以使用'next'实际上 –

+0

虽然多余的$()是不必要的,但它工作正常,所以我不认为这是OP所要求的。 – jfriend00

+0

我已经尝试过,但它似乎仍然没有引用该元素。它正在做的是获取并传递一个URL到元素中,但现在它变成空白 – zizther

相关问题