理解jQuery(基本问题)

时间:2011-01-22 22:33:56

标签: jquery ajax jscrollpane

我有一个非常基本的jquery问题。我试图将jscrollpane添加到我的网站,并在ajax调用后进行初始化。但是,当我运行该功能时,我一直在控制台中收到“testFunction未定义”的消息。代码非常基础:

$(document).ready(function() {
  var api = $('.scroll-pane').jScrollPane({
      showArrows:true,
      maintainPosition: false
    }).data('jsp');

  function testFunction() {
      api.getContentPane().load('ajax_content.html', function() {
      api.reinitialise();
   });
 }          
});

为什么我一直收到消息?如果我从测试功能中取出测试功能,我会提前感谢“api not defined”错误

3 个答案:

答案 0 :(得分:5)

这与您定义的变量api的范围有关。您需要在api之外定义$(document).ready(function() { ...变量。试试这个:

var api;
$(document).ready(function() {
  api = $('.scroll-pane').jScrollPane({
      showArrows:true,
      maintainPosition: false
  }).data('jsp');
});

function testFunction() {
    api.getContentPane().load('ajax_content.html', function() {
        api.reinitialise();
    });
}

希望这有帮助。

答案 1 :(得分:2)

我认为这是因为测试功能的范围现在是您在文档就绪时调用的匿名函数。在匿名函数之外声明testFunction。

答案 2 :(得分:1)

“未定义”消息来自使用testFunction的代码,但在定义之前不会等待。您已在documentReady事件中包含testFunction的定义,但未包含testFunction的用户。