我有一个动态注入<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等填充。)
答案 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);