[英]how to wrap all li element inside ul element using jQuery?
I have this html: 我有这个HTML:
<li>
<a href=""></a>
<ul class="parent">
<li><a href="">one</a></li>
<li><a href="">two</a></li>
<li><a href="">three</a></li>
<li><a href="">four</a></li>
<li><a href="">five</a></li>
<li><a href="">six</a></li>
</ul>
</li>
<li>
<a href=""></a>
<ul class="parent2">
<li><a href="">one</a></li>
<li><a href="">two</a></li>
<li><a href="">three</a></li>
<li><a href="">four</a></li>
<li><a href="">five</a></li>
<li><a href="">six</a></li>
</ul>
</li>
<div class="all"></div>
I am using following jQuery code to get all li
elements of .parent
class and want to show that all li
elements to div class called .all
. 我正在使用以下jQuery代码来获取
.parent
类的所有li
元素,并希望显示div类中.all
名为.parent
li
元素。
<script>
$(".all").prepend("<ul>");
$( ".parent li" ).each(function( index ) {
$(".all").append("<li>" + $(this).text() + "</li>");
});
$(".all").prepend("</ul>");
</script>
now it's adding to .all
div class but <ul>
and </ul>
element is adding above the li
elements but it's should be wrap the all li
elements. 现在它已添加到
.all
div类中,但<ul>
和</ul>
元素被添加到li
元素之上,但是应该将所有li
元素包装起来。
what I want for eg: 我想要的例如:
<ul>
<li>one</li>
res of the li..
</ul>
but showing: 但显示:
<ul></ul>
<li>one</li>
res of the li..
$(".all").prepend("<ul>"); $( ".parent li" ).each(function( index ) { $(".all ul").append("<li>" + $(this).text() + "</li>"); }); $(".all").prepend("</ul>");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <li> <a href=""></a> <ul class="parent"> <li><a href="">one</a></li> <li><a href="">two</a></li> <li><a href="">three</a></li> <li><a href="">four</a></li> <li><a href="">five</a></li> <li><a href="">six</a></li> </ul> </li> <li> <a href=""></a> <ul class="parent2"> <li><a href="">one</a></li> <li><a href="">two</a></li> <li><a href="">three</a></li> <li><a href="">four</a></li> <li><a href="">five</a></li> <li><a href="">six</a></li> </ul> </li> <div class="all"></div>
Your code 您的密码
$(".all").append("<li>" + $(this).text() + "</li>");
Should be changed 应该改变
$(".all ul").append("<li>" + $(this).text() + "</li>");
For append elements inside the <ul>
just use find()
over the <div>
element with class .all
to find the new appended <ul>
tag, and then add alls the <li>
on it: 对于
<ul>
内的append元素,只需在类.all
的<div>
元素上使用find()
来查找新的追加的<ul>
标记,然后在其上添加<li>
alls:
<script>
$(".all").append("<ul>");
var ul = $(".all").find("ul");
$( ".parent li" ).each(function( index )
{
ul.append("<li>" + $(this).text() + "</li>");
});
</script>
You can check the next working example: 您可以检查下一个工作示例:
$(".all").append("<ul>"); var ul = $(".all").find("ul"); $( ".parent li" ).each(function( index ) { ul.append("<li>" + $(this).text() + "</li>"); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <li> <a href=""></a> <ul class="parent"> <li><a href="">one</a></li> <li><a href="">two</a></li> <li><a href="">three</a></li> <li><a href="">four</a></li> <li><a href="">five</a></li> <li><a href="">six</a></li> </ul> </li> <li> <a href=""></a> <ul class="parent2"> <li><a href="">one</a></li> <li><a href="">two</a></li> <li><a href="">three</a></li> <li><a href="">four</a></li> <li><a href="">five</a></li> <li><a href="">six</a></li> </ul> </li> <div class="all"></div>
The jquery code can be rewritten like this: jQuery代码可以这样重写:
$(".all").append("<ul>"); $( ".parent li" ).each(function( index ) { $(".all ul").append("<li>" + $(this).text() + "</li>"); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <li> <a href=""></a> <ul class="parent"> <li><a href="">one</a></li> <li><a href="">two</a></li> <li><a href="">three</a></li> <li><a href="">four</a></li> <li><a href="">five</a></li> <li><a href="">six</a></li> </ul> </li> <li> <a href=""></a> <ul class="parent2"> <li><a href="">one</a></li> <li><a href="">two</a></li> <li><a href="">three</a></li> <li><a href="">four</a></li> <li><a href="">five</a></li> <li><a href="">six</a></li> </ul> </li> <div class="all"></div>
You're getting the problem because you're using prepend
method as a wrong way. 您遇到问题是因为您使用
prepend
方法是错误的方式。
.prepend
is used to add an element to the selector. .prepend
用于将元素添加到选择器。 Since you added ul
tag using $(".all").prepend("<ul>");
由于您使用
$(".all").prepend("<ul>");
添加了ul
标签$(".all").prepend("<ul>");
. 。 You don't need to add this tag again (
$(".all").prepend("</ul>");
). 您无需再次添加该标签(
$(".all").prepend("</ul>");
)。
Also, you're trying to append new li
tag inside the div tag ( .all
element). 另外,您尝试在div标签(
.all
元素)内附加新的li
标签。 It can be fixed by adding ul
inside the selector $(".all ul")
可以通过在选择器
$(".all ul")
添加ul
来解决此问题$(".all ul")
You can use prependTo()
您可以使用
prependTo()
$(".all").prepend("<ul class='new'>"); $( ".parent li" ).each(function( index ) { $(".all").append("<li>" + $(this).text() + "</li>"); }); $(".all li").prependTo(".new");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <li> <a href=""></a> <ul class="parent"> <li><a href="">one</a></li> <li><a href="">two</a></li> <li><a href="">three</a></li> <li><a href="">four</a></li> <li><a href="">five</a></li> <li><a href="">six</a></li> </ul> </li> <li> <a href=""></a> <ul class="parent2"> <li><a href="">one</a></li> <li><a href="">two</a></li> <li><a href="">three</a></li> <li><a href="">four</a></li> <li><a href="">five</a></li> <li><a href="">six</a></li> </ul> </li> <div class="all"></div>
No need to create a new <ul>
or use loops. 无需创建新的
<ul>
或使用循环。 Simply duplicate the existing <ul>
, find its <a>
elements, and .unwrap()
them: 只需复制现有的
<ul>
,找到其<a>
元素,然后.unwrap()
它们进行.unwrap()
:
$(".parent") .clone() //Duplicate the <ul> .appendTo(".all") //Put the copy in the <div> .find("a") //Find all of its <a> elements .contents().unwrap(); //Strip the <a> tag, but leave the text
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <li> <a href=""></a> <ul class="parent"> <li><a href="">one</a></li> <li><a href="">two</a></li> <li><a href="">three</a></li> <li><a href="">four</a></li> <li><a href="">five</a></li> <li><a href="">six</a></li> </ul> </li> <li> <a href=""></a> <ul class="parent2"> <li><a href="">one</a></li> <li><a href="">two</a></li> <li><a href="">three</a></li> <li><a href="">four</a></li> <li><a href="">five</a></li> <li><a href="">six</a></li> </ul> </li> <div class="all"></div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.