2011-01-22 106 views
0

我有一个很基本的jQuery问题。即时尝试将jscrollpane添加到我的网站,并让它在ajax调用后初始化。但是,当我运行的功能,我不断收到消息“testFunction未定义”在控制台中。代码是非常基本的:了解jQuery(基本问题)

$(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”错误提前致谢

回答

5

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

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

希望帮助。

+0

谢谢你这样做! – robs 2011-01-22 22:45:30

1

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

2

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