对于currentUnknownBox
,如果我使用“var”,预期的功能不能按预期工作(currentUnknownBox成为第一个单击的元素)。如果我删除了var,它会按预期工作。我认为这与全球范围有关。有人可以向我解释这一点吗?JavaScript scope - var vs global
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'变量(预计在else子句中)还有'currentUnknownBox'属性呢? – Bergi
与你的问题无关,但在JS花括号的安置问题,应该不应该在自己的行:http://stackoverflow.com/questions/3641519/why-results-varies-upon-placement-of-curly-大括号中的JavaScript代码 –