这是我的脚本(简化):
var $error = false;
//Check for errors
$('.required').each(function()
{
var $error = true;
});
alert($error);
如何让上述代码在alert函数中返回true ?每个函数在我的页面上执行 3 次以检查空字段。但是在上面的警报中包含false而不是true。有没有办法在每个函数之外解析变量$error以检查每个循环之后是否有空字段?
您正在隐藏回调内部的外部$error
变量。.each()
摆脱,var
所以你引用外部的:
var $error = false;
$('.required').each(function() {
$error = true; // Now this refers to the `$error` declared above
});
但是,如果您只是使用.each
调用来检查是否有任何元素具有.required
该类,则可以检查.length
:
alert($('.required').length > 0); // true or false depending if elements matched
只需删除 innervar
关键字
var $error = false;
//Check for errors
$('.required').each(function()
{
$error = true; // No Var Here
});
alert($error);
或window
用作您的命名空间,如下所示
window.error = false;
//Check for errors
$('.required').each(function()
{
window.error = true; // No Var Here
});
alert(window.error);
请注意,如果您遇到错误,最好打破循环return false
- 只是一个性能建议!
删除回调函数var
内部.each()
,否则您将在不同的范围内定义一个新变量。
var $error = false;
//Check for errors
$('.required').each(function() //<-- start of new scope block
{
var $error = true; //<--defines new variable -- different from one above
});
alert($error);
Dropping var
,它现在将使用在它上面的块中定义的变量
var $error = false;
//Check for errors
$('.required').each(function()
{
$error = true;
});
alert($error);
您$erro
声明locally
并globally
var $error = false;
$('.required').each(function()
{
$error = true;
});
如果要检查文本是否为空,可以使用:
var $error = false;
$('input.anyclass').each(function()
{
if($(this).val() == "")
{
$error = true;
}
});
alert($error);