find('ul.level2') as $ul) { // get parent li $li = $ul->parent(); // get columns $columns = (int) $li->attr('data-menu-columns'); if ($columns > 1) { $children = $ul->children('li'); $colrows = ceil($children->length / $columns); $column = 0; $i = 0; foreach ($children as $child) { $col = intval($i / $colrows); if ($column != $col) { $column = $col; } if ($li->children('ul')->length == $column) { $li->append(''); } if ($column > 0) { $li->children('ul')->item($column)->append($child); } $i++; } } else { $columns = 1; } // get width $width = (int) $li->attr('data-menu-columnwidth'); $style = $width > 0 ? sprintf(' style="width:%spx;"', $columns * $width) : null; // append dropdown divs $li->append(sprintf('', $columns, $style)); $div = $li->first('div.dropdown div.dropdown-bg div:first'); foreach ($li->children('ul') as $i => $u) { $div->append(sprintf('
', floor(100 / $columns)))->children('div')->item($i)->append($u); } } return $element; } }