如何使用“wrapAll()”创建包装元素?

时间:2011-08-07 12:32:30

标签: javascript jquery wrapall

请考虑以下代码:(实例here

$(function() {
  var wrapper = $("<div class='wrapper'></div>");
  $(".a").wrapAll(wrapper);
  wrapper.css("border", "5px solid black"); // Doesn't work
});
.wrapper {
  background-color: #777;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="a">Hello</div>
<div class="a">Stack</div>
<div class="a">Overflow</div>

获取创建的包装器并更改其属性的正确方法是什么?

注意: DOM中还有其他.wrapper个元素,所以这不起作用:

$(".wrapper").css("border", "5px solid black");

我不想为创建的包装器提供唯一的id

3 个答案:

答案 0 :(得分:32)

由于您只是包装了元素,因此可以使用parent()来获取新插入的包装器:

$(".a").wrapAll("<div class='wrapper'></div>")
       .parent().css("border", "5px solid black");

答案 1 :(得分:6)

调用wrapper时,wrapAll中存储的jQuery对象会被克隆,因此您无法通过操纵.wrappers来影响已插入DOM的wrapper,需要从文档中选择它们。

答案 2 :(得分:-2)

$(function() {
    var wrapper = $("<div class='wrapper'></div>");
    var wrapped = $(".a").wrapAll(wrapper);
    wrapped.css("border", "5px solid black");
});