我试图运行一个简单的post调用,检查更新,如果有的话,更新特定的元素。我的问题是,在fadeOut函数内(实现了平滑的fadeOut
和fadeIn
),我的变量i
(用作计数)增加了1,而不需要自己做。我尝试将变量重命名为count,但发生了相同的行为。我看不出这是在哪里发生的,或者为什么是这样,甚至console.log
与fadeOut
函数之外的变量也没有透露任何东西。
有人知道发生了什么事吗?
我的代码如下。
Javascript:$.post(BaseUrl + $(this).val(), function (data) {
var i = 0;
$(element).parent().children(".MenuLink").each(function(index, e) {
if ($(this).text() != data[i]['Value']) {
$(this).fadeOut(function() {
$(this).html('<a href="' + data[i]['Key'] + '"class="psuedolink personlink">' + data[i]['Value'] + "</a>");
$(this).fadeIn();
});
}
i++;
});
});
HTML: <div id="ActorMenu" class="Menu LastMenuItem">
<div id="ActorLabel" class="Label">Actor</div>
<div id="ActorDropdown" class="Dropdown">
<input id="ActorSearch" type="text" />
<hr />
<a class="MenuLink FirstDropdownItem" href="/Network/reveal_network_7777/Behavior/Summary/Actor/actor_id_0">actor_0</a>
<a class="MenuLink" href="/Network/reveal_network_7777/Behavior/Summary/Actor/actor_id_1">actor_1</a>
<a class="MenuLink" href="/Network/reveal_network_7777/Behavior/Summary/Actor/actor_id_2">actor_2</a>
<a class="MenuLink" href="/Network/reveal_network_7777/Behavior/Summary/Actor/actor_id_3">actor_3</a>
<a class="MenuLink" href="/Network/reveal_network_7777/Behavior/Summary/Actor/actor_id_4">actor_4</a>
</div>
</div>
这是因为当每个循环执行时,i的值已经增加了,当执行fadeOut回调时,i的值已经改变了。试试这个
$.post(BaseUrl + $(this).val(), function (data) {
var i = 0;
$(element).parent().children(".MenuLink").each(function(index, e) {
if ($(this).text() != data[i]['Value']) {
$(this).data("i", i).fadeOut(function() {
var count = $(this).data("i");
$(this).html('<a href="' + data[count]['Key'] + '"class="psuedolink personlink">' + data[count]['Value'] + "</a>").fadeIn();
});
}
i++;
});
});