2014-11-03 4 views
0

У меня есть figcaption, и я бы хотел, чтобы текст был из него. Это то, что похоже на инспектор элементов в хроме. По какой-то причине «innerHTML» начинается с возврата, а затем множества пробелов. «InnerText», однако, выглядит хорошо, поэтому я заинтересован в этом.получить innerText с jQuery вместо innerHTML

enter image description here

Интернет Я вижу, я должен использовать метод text(), чтобы получить InnerText, но, кажется, дает innerHTML:

console.log("-"+$(this).find("figcaption").text()+"-"); 

enter image description here

Так как я могу добраться до InnerText?

+3

Я думаю, что это действительно возвращает innerText. Обратите внимание, что в результирующем результате нет тегов html. – Kolban

+0

Вы можете использовать 'replace' после' text() ', например:' .replace (/() {2,}/gi, "red") '. Он удалит все лишние пробелы. – klauskpm

+0

@ Kolban Но внутри внутреннего текста в помещении нет пробелов. – clankill3r

ответ

2

При создании HTML-элемент, такой как:

<p>Hello   World</p> 

Когда, которая визуализируется браузером, пробельные по умолчанию свернута. Результатом будет «Hello World». Это свертывание данных происходит во время рендеринга браузера. Модель DOM, содержащаяся в браузере, поддерживает фактический текст, включая любые пробелы, содержащиеся в нем. Таким образом, то, что вы видите на экране, может не совпадать с данными, содержащимися в DOM.

Данные, разделенные пробелом, доступны через свойство DOM, называемое «innerText».

A jsBin образец, содержащий данные, предоставленные.

Демонстрационный код в основном:

HTML

JavaScript

$(function() { 
    $("button").click(function() { 
    console.log("text: " + $("#here").text()); 
    console.log("innerText: " + $("#here").prop("innerText")); 
    }); 
}); 

Консоль зарегистрирует:

text: Hello  World 
innerText: Hello World 

Из вашего исходного вопроса использование метода text() возвращает данные DOM, а использование prop("innerText") возвращает вычисленное значение innerText, которое построено в браузере.

+0

Если я смотрю в dom (см. Снимок экрана OP), то innerHTML имеет эти пробелы, а innerText, однако, не имеет. Таким образом, предполагается, что innerText в порядке, без необходимости редактировать. В случае, если это имеет значение, это текст добавления фотографий в tumblr. Таким образом, добавленные пробелы не имеют никакого смысла. – clankill3r

+0

Спасибо за комментарий. Ive обновил ответ с более подробной информацией и образцом. – Kolban

Смежные вопросы