jQuery: .wrapAll 围绕多个重复元素
jQuery: .wrapAll around multiple, repeating Elements
我有一些感觉有点乱的表格,因为每一行并没有真正被 div 或 ul/li 包裹,这使得样式设计变得困难。所以我想用 jQuery 把它包起来,因为我不能直接编辑 HTML。
现在看起来有点像这样:
<p class="A">Blabla</p>
<input class="B">
<p class="A">Blabla</p>
<input class="B">
<p class="A">Blabla</p>
<input class="B">
<p class="A">Blabla</p>
<input class="B">
我试图使用这段代码:
jQuery(document).ready(function( $ ){
$( ".A, .B" ).wrapAll("<div class='C'></div>");
});
当然,这会在所有 A 和 B 周围放置一个 div 作为“块”。
但我想要的是在每一行周围都有这个 div。
因此,我基本上想要这个:
<div class="C">
<p class="A">Blabla</p>
<input class="B">
</div>
<div class="C">
<p class="A">Blabla</p>
<input class="B">
</div>
<div class="C">
<p class="A">Blabla</p>
<input class="B">
</div>
<div class="C">
<p class="A">Blabla</p>
<input class="B">
</div>
你能帮忙吗? (:
注意:对我来说不必 div。 ul/li 也可以,但也许工作量更大?
使用each()
$(".A + .B").each(function() {
$(this).prev().addBack().wrapAll("<div class='C'></div>");
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p class="A">Blabla</p>
<input class="B">
<p class="A">Blabla</p>
<input class="B">
<p class="A">Blabla</p>
<input class="B">
<p class="A">Blabla</p>
<input class="B">
您可以使用每个函数遍历每个选定的 A
class,然后使用添加函数创建一个新的 jQuery 对象 B
class 通过在 next 函数的帮助下立即跟随兄弟姐妹,然后使用 wrapAll 函数包装它们。
$(".A").each(function(){
$(this).add($(this).next(".B")).wrapAll("<div class='C'></div>");
})
如果您想在 A
class 和另一个 A
class,
之间添加所有内容
$(".A").each(function(){
$(this).nextUntil(".A").addBack().wrapAll("<div class='C'></div>")
})
这个也能解决你上面的问题
我有一些感觉有点乱的表格,因为每一行并没有真正被 div 或 ul/li 包裹,这使得样式设计变得困难。所以我想用 jQuery 把它包起来,因为我不能直接编辑 HTML。
现在看起来有点像这样:
<p class="A">Blabla</p>
<input class="B">
<p class="A">Blabla</p>
<input class="B">
<p class="A">Blabla</p>
<input class="B">
<p class="A">Blabla</p>
<input class="B">
我试图使用这段代码:
jQuery(document).ready(function( $ ){
$( ".A, .B" ).wrapAll("<div class='C'></div>");
});
当然,这会在所有 A 和 B 周围放置一个 div 作为“块”。 但我想要的是在每一行周围都有这个 div。
因此,我基本上想要这个:
<div class="C">
<p class="A">Blabla</p>
<input class="B">
</div>
<div class="C">
<p class="A">Blabla</p>
<input class="B">
</div>
<div class="C">
<p class="A">Blabla</p>
<input class="B">
</div>
<div class="C">
<p class="A">Blabla</p>
<input class="B">
</div>
你能帮忙吗? (:
注意:对我来说不必 div。 ul/li 也可以,但也许工作量更大?
使用each()
$(".A + .B").each(function() {
$(this).prev().addBack().wrapAll("<div class='C'></div>");
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p class="A">Blabla</p>
<input class="B">
<p class="A">Blabla</p>
<input class="B">
<p class="A">Blabla</p>
<input class="B">
<p class="A">Blabla</p>
<input class="B">
您可以使用每个函数遍历每个选定的 A
class,然后使用添加函数创建一个新的 jQuery 对象 B
class 通过在 next 函数的帮助下立即跟随兄弟姐妹,然后使用 wrapAll 函数包装它们。
$(".A").each(function(){
$(this).add($(this).next(".B")).wrapAll("<div class='C'></div>");
})
如果您想在 A
class 和另一个 A
class,
$(".A").each(function(){
$(this).nextUntil(".A").addBack().wrapAll("<div class='C'></div>")
})
这个也能解决你上面的问题