Это проблема с подъемом.
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();
};