Javascript JS:将1个ul拆分并替换为2个相等的ul';s

Javascript JS:将1个ul拆分并替换为2个相等的ul';s,javascript,jquery,split,html-lists,Javascript,Jquery,Split,Html Lists,我有一个变量,我在其中搜索ul。我希望每个ul分成两个相等的ul,并用这两个新的ul替换原来的ul 我不能用CSS实现这一点,因为我希望li的每一列都从上到下显示,而不是从左到右 我有以下代码,但我现在被卡住了 <script type="text/javascript"> var wid_tekst1 = "<?php echo $wid_tekst1; ?>"; $(wid_tekst1).filter('ul').each(function() { //C

我有一个变量,我在其中搜索ul。我希望每个ul分成两个相等的ul,并用这两个新的ul替换原来的ul

我不能用CSS实现这一点,因为我希望li的每一列都从上到下显示,而不是从左到右

我有以下代码,但我现在被卡住了

<script type="text/javascript">
var wid_tekst1 = "<?php echo $wid_tekst1; ?>";
$(wid_tekst1).filter('ul').each(function() {

    //Create array of all posts in lists
    var postsArr = new Array();
    $postsList = $(this);

    $(this).find('li').each(function(){
        postsArr.push($(this).html());
    })

    //Split the array at this point. The original array is altered.
    var firstList = postsArr.splice(0, Math.round(postsArr.length / 2)),
    secondList = postsArr,
    ListHTML = '';
    function createHTML(list){
        ListHTML = '';
        for (var i = 0; i < list.length; i++) {
            ListHTML += '<li>' + list[i] + '</li>'
        };

    }

    //$(firstList).before('<ul>');
    //$(firstList).after('</ul>');

    //$(secondList).before('<ul>');
    //$(secondList).after('</ul>');

    alert(firstList);
    alert(secondList);

})
</script>
但如果我将变量wid_tekst1设置为all,它将替换网页中的所有ul。我只想替换.content类中的ul


谢谢

您的代码可以优化:

$(wid_tekst1).filter('ul').each(function() {
    var $li = $(this).children(),
        $newUl = $('<ul>').insertAfter(this),
        middle = Math.ceil($li.length / 2) - 1;
    $li.filter(':gt(' + middle + ')').appendTo($newUl);    
});
$(wid_tekst1).filter('ul')。每个(函数(){
var$li=$(this.children(),
$newUl=$(“
    ”)。在此之后插入, middle=Math.ceil($li.length/2)-1; $li.filter(':gt('+middle+')).appendTo($newUl); });
演示:
混用innerHTML(当您使用字符串构造列表时)并不理想,因为如果绑定了某些内容,您将丢失所有事件原始处理程序。

谢谢!我理解您的代码,但它没有被php变量$wid_tekst1替换。。。当我加载页面时,仍然有一个长ul。它只在我设置var wid_tekst1=“*”时起作用;但它会将页面中的所有ul拆分。我只想在“.content”类中拆分ul。当我设置var wid_tekst1=$('.content'),它没有任何作用…再次感谢你,但它仍然只适用于*。我认为问题在于:我有一个php变量$output,它包含一个填充了html的字符串。在这个字符串中,有一个带有class.content的div。在代码中,我通过回显变量输出。然后,如果文档准备就绪,我将运行脚本。这可能是问题所在吗?非常感谢。我真的很感谢你的帮助
var wid_tekst1 = "*";
$(wid_tekst1).filter('ul').each(function() {
    var $li = $(this).children(),
        $newUl = $('<ul>').insertAfter(this),
        middle = Math.ceil($li.length / 2) - 1;
    $li.filter(':gt(' + middle + ')').appendTo($newUl);    
});