我有一个包含单个嵌套 UL 的 LI 元素,该 UL 将具有 20-30 个 LI,并且一些 LI 将具有子 UL。现在它是一个长长的滚动列表。我希望能够通过 jQuery 将 UL 拆分为三个 UL,方法是传递一组唯一的 LI 选择器(例如,“li#item-173,li#item-169,li#item-175”)来指示一个新的 UL 应该开始的点。
因此,不要让父 LI 具有约 30 个项目的子 UL。我希望有一个带有子 DIV 的父 LI,并且在该 DIV 内部,根据我提供的“拆分点”,三个具有不同数量项目的 UL。
希望这是有道理的。
看看我想要实现的目标......
可以通过在以下链接中选择“行业和资源”菜单项来查看整体列表:
这是我想要实现的目标,但需要通过 jQuery on DOM ready 来实现,因为菜单列表是由为站点提供服务的 CMS 动态生成的。(再次,选择 Industries & Resources 菜单项):
http://new.efigroupllc.com/biglist.html
这是我的代码的当前状态...
我的问题是使用each方法迭代容器 UL 中的 LI 元素。
以下是我在发布此编辑之前获得的代码。猜猜它会帮助发布它。:-/
“myCount”告诉我有 22 个项目(例如,长度属性)。但是,我的“每个”函数中的警报仅在第一个元素上触发,而不是为 22 个元素中的每一个触发。因为我无法让循环按照我想要的方式工作,所以我从来没有真正将 LI 从第一个 UL 删除/附加到第二个或第三个 UL。
这是“此刻”的代码,但我仍然对它感到困惑。
var targetId = 'item-7';
var col2startId = 'item-168';
var col3startId = 'item-174';
// get all of the wrapper pieces in place!
// -- add wrapper
jQuery('li#' + targetId + ' > ul').wrap('<div class="industries-list-wrapper">');
// -- add ULs and assign IDs!
jQuery('li#' + targetId + ' div.industries-list-wrapper > ul').attr('id',targetId + 'col1');
jQuery('li#' + targetId + ' div.industries-list-wrapper').append('<ul id="' + targetId + 'col2">');
jQuery('li#' + targetId + ' div.industries-list-wrapper').append('<ul id="' + targetId + 'col3">');
// iterate over the source ULs LI elements, move LI element to columns as appropriate
var thisColumn = 1;
var myCount = jQuery('ul#'+targetId+'col1 > li').length;
alert('there are ' + myCount + ' LIs in the list!');
jQuery('ul#'+targetId+'col1 > li').each(
function() {
// check for trigger's to set column
myCurrentId = jQuery(this).attr('id');
alert('myCurrentId = ' + myCurrentId);
if (jQuery(this).attr('id') == col2startId) {
thisColumn = 2;
alert('starting column 2!');
} else if (jQuery(this).attr('id') == col3StartId) {
thisColumn = 3;
alert('starting column 3!');
}
if (thisColumn == 2) {
// append jQuery(this) to column 2 and remove from column 1
} else if (thisColumn == 3) {
// append jQuery(this) to column 3 and remove from column 1
}
}
);