Как получить элемент обертки, созданный с помощью "wrapAll ()"? - PullRequest
23 голосов
/ 07 августа 2011

Рассмотрим следующий код: (живой пример здесь )

$(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 ]

32 голосов
/ 07 августа 2011

Поскольку вы только что завернули элементы, вы можете использовать parent () , чтобы получить вновь вставленные оболочки:

$(".a").wrapAll("<div class='wrapper'></div>")
       .parent().css("border", "5px solid black");
6 голосов
/ 07 августа 2011

Объект jQuery, хранящийся в wrapper, клонируется при вызове wrapAll, поэтому вы не можете воздействовать на .wrappers, вставленные в DOM, манипулируя wrapper, вам нужно выбрать их из документа.

0 голосов
/ 07 августа 2011
$(function() {
    var wrapper = $("<div class='wrapper'></div>");
    var wrapped = $(".a").wrapAll(wrapper);
    wrapped.css("border", "5px solid black");
});
...