как получить текст такого элемента с помощью jquery?

#jquery #jquery-selectors

#jquery #jquery-селекторы

Вопрос:

есть фрагменты HTML-кодов, подобные этому <label for=name>fill in your name<span>*</span></label> , при использовании jquery $("label[for='name']").text() он возвращал ‘заполните ваше имя *’, как можно получить точное ‘заполните ваше имя’?

Ответ №1:

contents() позволяет выбирать все типы узлов, включая только текстовые узлы. Например, это вернет текст для первого текстового узла элемента:

 $("label[for='name']").contents().eq(0).text();
  

Рабочая демонстрация: http://jsfiddle.net/mX8zK /

Ответ №2:

Я бы посоветовал вам не ставить <span>*</span> , а вместо этого использовать псевдоэлементы ( :after ) . Таким образом, вы можете легко получить лучшие результаты.

Смотрите этот ПРИМЕР.

Обратите внимание на более чистую разметку:

 <label for="name" class=required>Fill in your Name</label>
  

Каждая .required метка будет иметь звездочку по умолчанию благодаря :after псевдо-элементу, который к ней применяется:

 label.required:after {
    content: '*';
}
  

Важное примечание: упомянутое решение не будет выполнено в IE7 и ниже, поскольку они не поддерживают псевдоэлементы.