Jquery关闭div和ul标签并重新打开新的

时间:2014-11-18 18:12:53

标签: jquery html

我有这个HTML

<div class="full">
 <ul>
  <li>Big Menu1
   <div class="col"> 
    <ul>
     <li>menu1</li>
     <li>menu2</li>
     <li>menu3</li>
     <li>menu4</li>  
     <li>menu5</li>
     <li>menu6</li>
     <li>menu7</li>
     <li>menu8</li>                       
   </ul>        
 </li> 
 <li>Big Menu 2</li>   
</div>

我想创建一个新的html所有三个li,它创建一个带有“col”类的新div和一个新的ul标签,如下所示:

<div class="full">
  <ul>
    <li>Big Menu1
     <div class="col"> 
       <ul>
         <li>menu1</li>
         <li>menu2</li>
         <li>menu3</li>
       </ul>
     </div>
     <div class="col"> 
     <ul>
          <li>menu4</li>  
          <li>menu5</li>
          <li>menu6</li>
     </ul>            
    </div>
    <div class="col"> 
     <ul>
         <li>menu7</li>
         <li>menu8</li>                       
     </ul>
    </div>
   </li>
   <li>Big Menu2</li>
  </ul>
 </div>      

如何使用jQuery来实现?我只是设法创建了ul,但是  无法创建div。

4 个答案:

答案 0 :(得分:0)

你可以做点什么

var div = $('.full').append('<div class="col">content</div>');
var ul = $(div).append('<ul> </ul>');
$(ul).append('<li>menu#</li>);

这也允许您使菜单动态,因此可以在某处设置变量,如

 var menu = somecontenttoTriggermenu;
 $(ul).append('<li>' +menu+ '</li>');

或者在致命一击中做到这一切。没有动态的方法。这一切都取决于它的用途。

答案 1 :(得分:0)

可以使用这样的东西:

$('.full .col').each(function() {
    var $col = $(this);
    var $li = $col.find('ul li:gt(2)');
    for (var i = 0; i < $li.length; i = i + 3) {
      var $newList = $('<ul>').append($li.slice(i, i + 3));
      var $newCol = $('<div>', {
        class: 'col'
      }).append($newList);
      $col.parent().append($newCol);
    }
});

$(function() {
  $('.full .col').each(function() {
    var $col = $(this);
    var $li = $col.find('ul li:gt(2)');
    for (var i = 0; i < $li.length; i = i + 3) {
      var $newList = $('<ul>').append($li.slice(i, i + 3));
      var $newCol = $('<div>', {
        class: 'col'
      }).append($newList);
      $col.parent().append($newCol);
    }
  });
});
.col {
  border: 1px solid green;
  padding: 10px;
}
.col ul {
  border: 1px solid red
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="full">
  <ul>
    <li>Big Menu1
      <div class="col">
        <ul>
          <li>menu1</li>
          <li>menu2</li>
          <li>menu3</li>
          <li>menu4</li>
          <li>menu5</li>
          <li>menu6</li>
          <li>menu7</li>
          <li>menu8</li>
        </ul>
      </div>
    </li>
    <li>Big Menu 2</li>
  </ul>
</div>

答案 2 :(得分:0)

这是一种JavaScript方法:

&#13;
&#13;
var ul = document.createElement('ul');
var li = document.createElement('li');
li.appendChild(document.createTextNode('BigMenu1'))
ul.appendChild(li);
var c = 1;
for (i = 0; i < 3; i++) {
    var newDiv = document.createElement('div');
    newDiv.className = 'col';
    var newUl = document.createElement('ul');
    for (j = 0; j < 3; j++) {
        if (i == 2 && j == 2) {
            break;
        }
        newLi = document.createElement('li');
        newLi.appendChild(document.createTextNode('menu' + c++));
        newUl.appendChild(newLi);
    }
    newDiv.appendChild(newUl);
    li.appendChild(newDiv)
}
var lastLi = document.createElement('li');
lastLi.appendChild(document.createTextNode('BigMenu2'));
ul.appendChild(lastLi);
var full = document.createElement('div');
full.className = 'full';
full.appendChild(ul);
document.body.appendChild(full);
&#13;
.col {
    border: 1px solid black;
    padding-top: 5px;
    padding-bottom: 5px;
}
&#13;
&#13;
&#13;

答案 3 :(得分:-2)

你可以使用jquery append方法。$("#foo").append("<div id='myDiv'>Other element</div>")