我有一个函数从一个有序列表中删除列表元素,然后在当前一个列表之后找到所有有序列表,获取它们的第一个元素并将其附加到列出前一个元素.
问题:如果我从任何列表中删除第一个元素或者附加函数停止工作,我相信它是由于jQuery记住第一个元素是什么,因为它不再在它的位置它找不到它,但它应该只是重新定义/查找当前第一个孩子的特定列表中的新元素.这是功能:
function removeQueueItem(element) {
//Get ordered list of removed list element
var itemMonth = element.parents().eq(2); //li.queue-month
//Get all following lists
nextMonths = itemMonth.nextAll('.queue-month');
//Fade out removed element
element.parent().fadeOut(function(index){
//Remove element from DOM
element.remove();
nextMonths.each(function(index) {
//Check if next month has socks
if($(this).find('.item-dragable').length > 0) {
var firstItem = $(this).find('.item-dragable:first-child');
$(this).prev().find('ol').append(firstItem);
}
});
});
}
Run Code Online (Sandbox Code Playgroud)
JsFiddle - 在9月删除第一个项目,然后在8月删除任何项目,9月的第一个项目应该变成粉红色,但它没有发生.这就是问题所在.
因为您要删除a标记而不是li标记.所以当你搜索:first-child它时,它就是那里,但是你没有看到它.为了使其工作,您需要更改以下代码:
element.parent().fadeOut(function(index){
//Remove element from DOM
element.remove(); <-- here
...
});
Run Code Online (Sandbox Code Playgroud)
至:
element.parent().fadeOut(function(index){
//Remove element from DOM
$(this).remove(); <-- element to $(this)
...
});
Run Code Online (Sandbox Code Playgroud)