Как извлечь жирный текст из тега <b> с помощью jQuery
У меня есть некоторый (плохой) HTML, который я пытаюсь очистить, который выглядит так
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Georgia,"Times New Roman",serif;">
<span style="color: #c00000;">"<i style="mso-bidi-font-style: normal;">Book Name</i>" by
<b style="mso-bidi-font-weight: normal;">AUTHOR</b>. Release Date:
<b style="mso-bidi-font-weight: normal;">DATE</b>. Published by
<b style="mso-bidi-font-weight: normal;">PUBLISHER</b>
</div>
Мне нужно выделить три вещи, выделенные жирным шрифтом: АВТОР, ДАТА И ИЗДАТЕЛЬ
Я пробовал такие вещи, как $('strong,b').each(...)
но это дает весь текст.
Изменить: вот частичный код, который я использую, в основном, что я хочу сделать, это получить все детали из набора таких элементов.
$(".MsoNormal").each(function(index) {
var book = {}
var elem = $(this).text()
elem = sanitizeString(elem) // Removes whitespaces and line breaks
book["title"] = getTitle(elem) // Gets the book name, which is between double quotes
//Get author,date & publisher here $('b') traverses everything again
}
})
2 ответа
Решение
Использование map
функционировать как в примере ниже. get
Метод вернет массив, и тогда у вас будет свобода делать что угодно с этой информацией.
var text = $("b").map(function() {
return $(this).text();
}).get();
alert(text);
alert("Bold text: " + text.join(" "));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Georgia,"Times New Roman",serif;">
<span style="color: #c00000;">"<i style="mso-bidi-font-style: normal;">Book Name</i>" by
<b style="mso-bidi-font-weight: normal;">AUTHOR</b>. Release Date:
<b style="mso-bidi-font-weight: normal;">DATE</b>. Published by
<b style="mso-bidi-font-weight: normal;">PUBLISHER</b>
</div>
Просто используйте $('b')
селектор:
$('b').each(function(index, element) {
console.log(element.textContent);
});
Или, если вы хотите сохранить их в массиве, вы можете использовать .map
метод:
var bold_words = $('b').map(function() { return this.textContent });
console.log(bold_words);
// ["AUTHOR", "DATE", "PUBLISHER"]