我有这个方法:
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(){ /*...*/ };
};
它崩溃并立即刷新,
当它被放置在$(文件).ready ....之外时,它正在工作,
但由于某种原因,它不会显示fancybox的内容,
再次,立即刷新。
我应该在哪里放置它以及如何使其显示内容并仅在
时继续按下fancybox上的'close'按钮?
谢谢你!答案 0 :(得分:3)
这是一个悬挂问题。
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();
};