【发布时间】:2012-04-20 13:55:51
【问题描述】:
这个问题出现了很多,但我无法解决。
我有 5 个 div,我想在最后一个使用的 div 之前隐藏 div。因此,如果用户单击 div 1 中的某处,然后单击 div 2 中的某处,则 div 1 淡出(所有这一切都在 Ajax 调用之后)
这是我的代码:
$(document).ready(function() {
$("#[id^='r_form_']").bind("ajax:success", function(evt, data, status, xhr) {
var $form = $(this);
$(this).parent().css("background", "green");
if($lastForm == null) {
var $lastForm = $(this);
};
if(!($lastForm[0] == $form[0])) {
$lastForm.parent().fadeOut(1500);
var $lastForm = $(this);
};
});
});
如果变量$lastForm 未定义,则分配发生Ajax 的当前表单。
变量始终未定义。我在循环中添加了一个alert('undefined'),我总是明白。为什么?
我感觉这可能是因为当 Ajax 请求返回时变量被重置。但我不是真正的专家,似乎无法找到答案。
【问题讨论】:
-
代码提示:没有理由将
;放在一个块之后(即在所有ifs之后),您可以使用a != b而不是!(a == b)。跨度> -
另外,选择器的开头不应该有
#,把它去掉。 -
提示:在这种情况下,写
if (!$lastForm)会更短/更容易。 -
@minitech。但它被调用了,所以......去看看。
-
@Phrogz。你是对的,但应该注意的是,如果
$lastForm可以是0,则它被视为错误。但在这种情况下你是对的(你提到过!只是澄清了你的明智评论......)
标签: javascript jquery ajax scope