【发布时间】:2013-04-11 21:47:19
【问题描述】:
对于currentUnknownBox,如果我使用“var”,预期的功能将无法按预期工作(currentUnknownBox 成为单击的第一个元素)。如果我删除 var,它会按预期工作。我假设这与全局范围有关。有人可以向我解释一下吗?
jQuery(".box.unknown").live('click',function()
{
var currentUnknownBox = this;
//if we are NOT on mobile, use jQuery UI dialog
if (!Drupal.settings.is_mobile)
{
jQuery("#letter-input-dialog").dialog();
jQuery('#letter_input_form').submit(function()
{
var letter = jQuery("#letter_input").val();
jQuery("#letter-input-dialog").dialog('close');
jQuery("#letter_input").val('');
that.validateAndSaveLetter(currentUnknownBox, letter);
//Do not let the form actually submit
return false;
});
}
else
{
var letter = prompt('Please enter a letter to use in your guess');
that.validateAndSaveLetter(that.currentUnknownBox, letter);
}
});
编辑: 问题是我每次都在重新声明我的提交函数。
【问题讨论】:
-
that定义在哪里? -
currentUnknownBox好像没问题,但that是什么?为什么that变量上还有一个currentUnknownBox属性(在else 子句中预期)? -
与您的问题无关,但在 JS 花括号位置很重要,可能不应该在他们自己的行:stackoverflow.com/questions/3641519/…
-
@ZachL:这仅适用于对象文字。你放大括号的地方是个人编码风格,(虽然我不喜欢)Allman style 很好
-
@Bergi 是的,但保持一致很重要,因此即使是很小的边缘情况(这不是)也足以成为不使用 Allman 风格 IMO 的理由。
标签: javascript scope