2011-01-22 107 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。