Я использую эту строку кода:
$("#middle_child").contents().filter(function(){return this.nodeType == Node.TEXT_NODE;}).text();
Пока, я просто помещаю это в console.log(). Я использую Chrome для тестирования и возвращает значения как пустую строку, но значение должно возвращать "Средний ребенок".
Это HTML:
<div id='parent'>
Parent
<div id='oldest_child'>
Oldest Child
<div id='middle_child'>
Middle Child
<div id='youngest_child'>
Youngest Child
</div>
</div>
</div>
</div>
<div id='lone'>Lonely Div</div>
EDIT: Я пытался сделать jsfiddle, и это дало мне некоторую потенциальную информацию. В скрипке я выбрал jQuery 1.6.4, и он работал отлично. Версия jQuery, которую я запускаю на моем сайте, - 1.6.2. Кто-нибудь знает, может ли это быть частью (если не всем) моей проблемы?
Я понял свою проблему.
Во-первых, я соврал, я использую jQuery версии 1.9.1 по какой-то причине, она отображается как 1.6.2 в ссылке, но файл 1.9.1.
Теперь, моя проблема: я забыл обернуть свой скрипт внутри $ (document).ready().
Вы пытались хранить значение.text в переменной и регистрировать его? Не знаете, куда входит ваша проблема. Взгляните на этот JSFiddle, он использует тот же код, что и вы. Щелчок по кнопке заменит текст внутри # lone текстом из #middle_child.
var data = $("#middle_child").contents().filter(function () {
return this.nodeType == Node.TEXT_NODE;
}).text();
$('#button').click(function(){
$('#lone').empty().append(data);
});