2012-03-02 1 views
3

Я хочу получить текст всех элементов. Я использую этот код здесь:jQuery получить текст всех элементов на странице

$('*').filter(function() 
{ 
    if(($(this).text().lenght>0)&&($(this).text().lenght<100)) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
}).each(function() 
{ 
    console.log($(this).text()); 
}); 

Я пытаюсь показать только короткий текст, потому что .text() иногда возвращает HTML код, но он не работает вообще.

+1

Если это скопировать и вставить то, что вы ввели длину неправильно. – Archer

+1

О, дерьмо ... ради бога ... – gotqn

+0

Вы не первый, кто должен сделать очевидное, но как-то очень хорошо скрыто, опечатка;) – Archer

ответ

10

Это намного проще: $('body').text() дает вам весь текст на странице.

Если вам нужно перебрать все текстовые узлы, смотрите здесь: How do I select text nodes with jQuery?

+0

Да, но мне нужны отдельные текстовые элементы. Например: div с текстом «hi», div с текстом «пользователь» и т. Д. Мне нужно иметь массив с текстом этого элемента в финале. Вот почему я использую $ ('*') – gotqn

+0

См. Ссылку в своем ответе, как перебирать все текстовые узлы в документе. Это намного сложнее, чем вы думаете. –

+0

Спасибо всем за ответы. Я исправил свою функцию и сделал несколько сложнее делать то, что хочу. Я также просмотрю вашу ссылку. – gotqn

1

Существует правописание ошибка length должно быть

$('*').filter(function() 
{ 
    if(($(this).text().length>0)&&($(this).text().length<100)) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
}).each(function() 
{ 
    console.log($(this).text()); 
}); 
1

косяк проверить, работает ли это атм, но что-то вроде этого должен быть тем, что вам нужно, могут потребоваться некоторые изменения, чтобы отфильтровать скрипты и прочее.

$('body').children().each(function(index) { 
    yourarray[index] = $(this).text(); 
}); 

EDIT: Пробовал его и понял, что это берет только первые дети, а не внуки, а также включает в себя много пробелов и вещи Aswell, у меня нет времени, чтобы закодировать все функции для вас, но здесь хороший старт по крайней мере. .find ('*') извлекает все элементы внутри документа.

$("body").find('*').each(function (index) { 
    //checks that the text isnt empty, no need to store that. 
    if ($(this).text() != '') { 
     //stores the elements text inside a temp variable, 
     //trims it from whitespaces and console.logs the results. 
     temp = $(this).text(); 
     yourarray[index] = $.trim(temp); 
     console.log(index+': '+yourarray[index]); 
    } 
}); 
0

Может быть, это:

$("body").find().each(function() { 
    if ($(this).text != undefined) { 
     ... 
    } 
}