Вызов методов в jQuery - PullRequest
       7

Вызов методов в jQuery

2 голосов
/ 03 декабря 2011

У меня есть этот метод:

checkFancyBox=function(){
  ldValue=LD(user,'admin')+LD(pass,'admin');
  if(ldValue<2){
    myHashMap[pass.concat(user)]=ldValue;
    $.fancybox({
      content: "<span style='color:black'>Wrong username or password. </span>", 
      showCloseButton: true,
      transitionIn: "elastic"
    });
    $('#funny').show("");
    return false;  
  }
};

, когда он помещается в:

$(document).ready(function() { 
  //... 
  checkFancyBox(); 
  //...
  checkFancyBox=function(){ /*...*/ };
};

, он падает и мгновенно обновляется,

и когда это происходитнаходится вне $ (document) .ready .... он работает,

, но по какой-то причине не отображает содержимое fancybox,

и снова мгновенно обновляется.

где мне его разместить и как заставить его показывать содержимое и продолжать, только если нажата кнопка

'close' на fancybox?

спасибо!

1 Ответ

3 голосов
/ 03 декабря 2011

Это проблема с подъемом.

checkFancyBox=function(){...};
};

Поднимает объявление в начало функции, но не инициализацию .Поэтому, когда у вас есть

$(document).ready(function() { ... 
     //checkFancyBox declaration is hoisted to here, and is undefined
     checkFancyBox(); //calling an undefined variable is an error

     checkFancyBox = function(){...}; //now checkFancyBox is initialized, but too late to prevent the error
     };

Размещение этого объявления вне обработчика document.ready приводит к тому, что это объявление и инициализация происходят до запуска обработчика, поэтому checkFancyBox имеет значение,и можно назвать.Если вы решите придерживаться своего первоначального способа объявления функции, убедитесь, что вы поставили var перед ней.

var checkFancyBox = function(){...};

Но учтите, что функцию можно просто объявить следующим образом

function checkFancyBox(){
  //...
}

Если, с другой стороны, вы хотите, чтобы функция была локальной для вашего обработчика document.ready, просто переместите объявление в начало этого обработчика:

$(document).ready(function() { ... 
    var checkFancyBox = function(){...};
    //checkFancyBox declaration and initialization are both accomplished, 
    //and the function is safe to call

    checkFancyBox();
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...