Я хочу пройти через два класса страницы 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.
Возможный дубликат jquery, используя .each с несколькими селекторами и зная, на каком из них он находится в данный момент
что вы имеете в виду вместе с? конкат??
и какова структура ваших html-элементов ??
У вас не должно быть div.article в качестве селектора... у него нет href. Предоставьте правильное объяснение того, что именно вы пытаетесь сделать, вместе с минимальный воспроизводимый пример и образцом ожидаемых результатов.
в основном в div.news есть атрибут href (30 в числе, т.е. 30 div), который я могу извлечь (т.е. 30 ссылок href) из структуры html теперь в одном и том же каждом цикле, который я хочу вытащить текст из div. article, которого также 30 (т.е. 30 div) в одной и той же структуре html, и, наконец, помещайте оба в массив на каждой итерации.
что означает, что каждый раз, когда я запускаю каждый цикл, он должен помещать атрибут href div.news и текст div.article в массив объектов, как показано в приведенном выше коде.
тег привязки и div.aticle являются братьями и сестрами?
Не просто рассказывайте нам об этом... добавьте достаточно базового html, чтобы мы могли его увидеть и иметь возможность запускать код против него. Вот что подразумевается под минимальный воспроизводимый пример

Рассмотрим следующее:
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>
Вы можете просто оставить галочку внутри своего вызова
.each, используяthis.classListили$(this).is('.className'), чтобы отфильтровать их.