LI项和jQuery的奇怪DOM缓存/刷新问题

时间:2012-11-09 21:15:42

标签: jquery caching refresh html-lists

我有一个动态注入<li>个项目,第一个项目标有“.current”类。我在DOM中也有“下一个”按钮,它从列表中带有“.current”类的项目加载下一个项目。但是,当我动态地重新填充列表时,“下一步”按钮将加载列表中的每个其他项。如果我再次重新填充列表,则下一个按钮将加载列表中的每第3个项目。 List通过$ .ajax填充,是一个json数据类型。每次重新填充时,我都会删除所有列表项目,如下所示:

 $('#playlist').children().remove();

下一个按钮找到下一个项目,如下所示:

 $('#playlist ul').find(".current").nextAll().first().children('a');

关于为什么加载列表中的“下一个项目”会出现不一致的任何想法/建议?显然,它也与重新填充列表有关..我正在设置“cache”:在填充列表的$ .ajax调用中为false ...

当出现这种不一致时,行为似乎是这样的,即下一个项目是从先前加载的列表中的项目(带有“.current”类)开始的。

小提琴:http://jsfiddle.net/unA6h/7/(不是我的完整代码,但是让我头痛的部分;列表从ajax call..json等填充。)

1 个答案:

答案 0 :(得分:0)

你在没有任何兄弟姐妹的锚标签上调用.nextAll(),因此.nextAll()没有得到任何元素。您需要在.parent()之前添加.nextAll()。我还在下面做了一个小优化,没有任何关系来获取id,并且当你已经拥有元素时通过id选择。

var next_item = $('#playlist ul').find('.current').parent().nextAll('li[role="normal_item"]').first().children('a');
setItemAsCurrent(next_item);

http://jsfiddle.net/unA6h/16/