jquery/cheerio: как выбрать несколько элементов?

Мне нужно проанализировать разметку, подобную этой, с html-страницы:

<a href="#">
  <i class="icon-location"></i>London
</a>

Мне нужно попасть в Лондон.

Я пробовал что-то вроде (используя cheerio):

$('a', 'i[class="icon-location"]').text();

or

$('a > i[class="icon-location"]').text();

безуспешно...

Я хотел бы избежать таких методов, как next(), так как выражение должно быть передано в метод, который просто извлекает текст из селектора.

Какое выражение я должен использовать (если это возможно)?


person MarcoS    schedule 18.09.2015    source источник


Ответы (2)


Существует решение, довольно необычное, но работающее:

$("#foo")
    .clone()    //clone the element
    .children() //select all the children
    .remove()   //remove all the children
    .end()  //again go back to selected element
    .text();

Демо: https://jsfiddle.net/2r19xvep/

Или вы можете окружить свое значение новым тегом, чтобы просто выбрать его:

<i class="icon-location"></i><span class="whatever">London</span>

Затем

$('.whatever').text();
person Sebastien    schedule 27.09.2015
comment
Спасибо! Однако я не контролирую HTML-код, который мне нужно разобрать, он находится внутри общедоступной страницы... - person MarcoS; 27.09.2015

$('a').text();

получит текст как «Лондон».

person Soundarya HN    schedule 19.07.2021