У меня есть div с некоторыми дочерними элементами внутри него. Я пытаюсь перебрать div и отправить каждого потомка в массив объектов, но не могу понять, как перебирать div .

я пытался

$("#id").children('div').each(function(){arrayName.push(this.html)}

без удачи Вот что у меня так далеко.

$("#todocontentInner").children('div').each(function() { 
   oldContent.push(this.html());
            });

Я ожидаю, что oldcontent будет примерно таким же

["<div class="contentitem">Bob</div>", "<div class="contentitem">Joe</div"]
1
Ethan

3 ответа

Ваш код

$("#id").children('div').each(function(){arrayName.push(this.html)}

почти правильно. Проблема в том, что this.html ошибочен. Вы можете использовать this.innerHTML , например

$("#id").children('div').each(function(){arrayName.push(this.innerHTML)}

потому что this в этом контексте представляет элемент. Тем не менее, вы можете сделать это и в jQuery:

$("#id").children('div').each(function(){arrayName.push($(this).html)}

Вам не нужен JQuery для этого:

const arr = [...document.querySelectorAll('#someID > div')].map(el => el.innerHTML);

console.log(arr);
<div id="someID">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
  <div>6</div>
</div>

То, что вы делаете, правильно, за исключением того, что this является экземпляром элемента. Поэтому для вызова html () вам нужно сделать этот экземпляр jQuery с помощью $ (this) . Попробуйте код ниже.

let arr = [];

$("#parent div").each(function() {
  arr.push($(this).html());
});

console.log(arr);
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<div id="parent">
  <div>child 1</div>
  <div>child 2</div>
</div>
58550257