Не знаю как насчет валидности - не проверяла - но пилят так все, кому не лень) 
У Вас есть другой способ в загашнике? Послушаю с удовольствием, люблю оригинальные решения. Тем более, что у меня небольшая проблема возникла. Меню, к которому надо это применить, само генерируется скриптом. При добавлении данной функции, меню генерироваться перестает. Вот примерно как все происходит
<script>
	jQuery(document).ready(function($) {
		$(".flex").clone().removeClass("flex").addClass("desktopmenu").appendTo(".nextmenu .center");
		$(".desktopmenu ul").removeClass("flexnav identificator with-js opacity lg-screen");
		//вот сюда вставляем функцию
                $(function() {
                   var ul = $(".desktopmenu ul.count9), li = ul.children();
                   li.slice(0,4).wrapAll( "<div class='menucols' />");
                   li.slice(4,6).wrapAll( "<div class='menucols' />");
                   li.slice(6).wrapAll( "<div class='menucols' />");
                   ul.append("<div class='clear' />")
                });
	});
</script>
В консоли 
	
	| 
		
			 Цитата: 
		
	 | 
	| 
		(index):627 Uncaught SyntaxError: Invalid or unexpected token
	 | 
	
В этой строке только html
<div class="clear"></div>