Как зациклить два выбранных элемента?

Я хочу пройти через два класса страницы HTML, используя jQuery, и я пытаюсь использовать каждый цикл, но вопрос в том, где я могу получить доступ к обоим выбранным классам в функции обратного вызова?

var href = [];

  $("div.news > ul > li:nth-child(1) > a , div.aticle  ").each((el, i) => {
      var baseURL = "someURL";
      var link = baseURL + $(i).attr("href");
      var text =
         /* i want to access text() of div.article along with the href 
           of the div.news in this loop and then push it into href array */
      href.push({
        link
      });
  });

Я хочу получить доступ к тексту раздел.статья с помощью функции text() jquery вместе с hrefdiv.news в этом цикле, а затем поместить его в массив href.

Вы можете просто оставить галочку внутри своего вызова .each, используя this.classList или $(this).is('.className'), чтобы отфильтровать их.

shrys 11.07.2019 12:33

что вы имеете в виду вместе с? конкат??

Ravi 11.07.2019 12:35

и какова структура ваших html-элементов ??

Ravi 11.07.2019 12:36

У вас не должно быть div.article в качестве селектора... у него нет href. Предоставьте правильное объяснение того, что именно вы пытаетесь сделать, вместе с минимальный воспроизводимый пример и образцом ожидаемых результатов.

charlietfl 11.07.2019 12:39

в основном в div.news есть атрибут href (30 в числе, т.е. 30 div), который я могу извлечь (т.е. 30 ссылок href) из структуры html теперь в одном и том же каждом цикле, который я хочу вытащить текст из div. article, которого также 30 (т.е. 30 div) в одной и той же структуре html, и, наконец, помещайте оба в массив на каждой итерации.

Mohammad Basit 11.07.2019 12:51

что означает, что каждый раз, когда я запускаю каждый цикл, он должен помещать атрибут href div.news и текст div.article в массив объектов, как показано в приведенном выше коде.

Mohammad Basit 11.07.2019 12:53

тег привязки и div.aticle являются братьями и сестрами?

Ravi 11.07.2019 13:09

Не просто рассказывайте нам об этом... добавьте достаточно базового html, чтобы мы могли его увидеть и иметь возможность запускать код против него. Вот что подразумевается под минимальный воспроизводимый пример

charlietfl 11.07.2019 13:32
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
9
76
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Рассмотрим следующее:

var href = [];
var text = [];
$("div.news > ul > li:nth-child(1) > a, div.article").each((el, i) => {
  if ($(i).is(".article"))
    text.push($(i).text());
  else {
    var baseURL = "someURL";
    var link = baseURL + $(i).attr("href");
    href.push(link);
  }
});
console.info(href, text)
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class = "news">
  <ul>
    <li>
      <a href = "www.google.com"></a>
    </li>
  </ul>
  <ul>
    <li>
      <a href = "www.bing.com"></a>
    </li>
  </ul>
  <ul>
    <li>
      <a href = "www.duckduckgo.com"></a>
    </li>
  </ul>
</div>
<div class = "article">
  text
</div>
Ответ принят как подходящий

Опять же, проще без JQuery:

var href = [];
var baseURL = "someURL";
var text, link;
for (const el of document.querySelectorAll("div.news > ul > li:nth-child(1) > a , div.article")) {
  switch (el.tagName) {
    case 'A':
      link = el.getAttribute('href');
      break;
    case 'DIV':
      text = el.textContent;
      break;
    default:
  }
};
href.push(`<a href = "${baseURL}${link}">${text}</a>`);

console.info(href);
<div class = "news">
  <ul>
    <li>
      <a href = "www.google.com"></a>
    </li>
  </ul>
  <ul>
    <li>
      <a href = "www.bing.com"></a>
    </li>
  </ul>
  <ul>
    <li>
      <a href = "www.duckduckgo.com"></a>
    </li>
  </ul>
</div>
<div class = "article">
  text
</div>

Другие вопросы по теме