#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 и ниже, поскольку они не поддерживают псевдоэлементы.