Понимание jQuery (основной вопрос) - PullRequest
0 голосов
/ 23 января 2011

У меня довольно простой вопрос jquery. Я пытаюсь добавить jscrollpane на мой сайт и заставить его инициализироваться после вызова ajax. Однако, когда я запускаю функцию, я получаю сообщение «testFunction is notfined» в консоли. код очень простой:

$(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 notfined» заранее спасибо

Ответы [ 3 ]

5 голосов
/ 23 января 2011

Это связано с областью действия переменной 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();
    });
}

Надеюсь, это поможет.

2 голосов
/ 23 января 2011

Я думаю, это потому, что область действия тестовой функции теперь является анонимной функцией, которую вы вызываете для готового документа.Объявите testFunction вне этой анонимной функции.

1 голос
/ 23 января 2011

Сообщение «не определено» исходит из кода, который использует testFunction, но не ожидает его определения. Вы вложили определение testFunction в событие documentReady, но не являетесь пользователем testFunction.

...