我在我的应用程序中进行了相当多的DOM操作,添加了新节点,并且我发现children()函数可能不同步。我有一个有两行的tbody元素,我在这上面使用了children()函数来对这些行进行一些操作。然后我再向tbody添加两行,当我再次使用children函数进行更多操作时,我只返回原来的两行,而不是这些加上我刚刚添加的两行。我每次都会给孩子们打个电话,不依赖任何变量来自动更新。有没有办法清除jQuery的缓存 - 我已经注意到这样的问题有几次选择器并通过选择进一步向上的DOM树然后导航回来(即不要选择带有jQuery CSS选择器的tbody)来解决它选择表然后执行table.tBodies [0] .rows),但在这种情况下不起作用。
谢谢, 菲尔
答案 0 :(得分:0)
children()函数不会失去同步。如果更改了DOM,则必须再次执行该操作。在修改时,你可以有一个回调来重建你的匹配元素数组。这不是缓存机制,就像JavaScript一样:线性。 Ajax调用有时会被缓存,但在这里似乎并非如此。
<强>建议强> 始终使用最新版本的jQuery:1.3.2 now。
<强>更新即可。所以这是你的代码:
function removeGroup() {
var groupNodes = [ $('#row1')[0], $('#row2') ]; // is this correct?
var parent = groupNodes[0].parentNode;
if ( $(parent).children().length > 2) {
parent.removeChild(groupNodes[0]); // why not use dirrectly $('#row1')[0].remove();?
parent.removeChild(groupNodes[1]); // same here
} else {
alert("Can't delete last group");
}
}
此代码与缓存无关,而且大多数代码甚至都通过jQuery传递。 更好地解释你想做什么,并且会做到。