jQuery 1.2.6缓存

时间:2009-08-05 13:16:11

标签: javascript jquery

我在我的应用程序中进行了相当多的DOM操作,添加了新节点,并且我发现children()函数可能不同步。我有一个有两行的tbody元素,我在这上面使用了children()函数来对这些行进行一些操作。然后我再向tbody添加两行,当我再次使用children函数进行更多操作时,我只返回原来的两行,而不是这些加上我刚刚添加的两行。我每次都会给孩子们打个电话,不依赖任何变量来自动更新。有没有办法清除jQuery的缓存 - 我已经注意到这样的问题有几次选择器并通过选择进一步向上的DOM树然后导航回来(即不要选择带有jQuery CSS选择器的tbody)来解决它选择表然后执行table.tBodies [0] .rows),但在这种情况下不起作用。

谢谢, 菲尔

1 个答案:

答案 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传递。 更好地解释你想做什么,并且会做到。