2012-02-08 2 views
4

Например, мы имеем следующий код (это может быть любой тег с вложенными тегами и текстом):Как я могу выбрать текст из элемента с помощью JQuery

<td id='test'> 
Hello 
<a href='foo.html'>JS</a> 
<noindex>Map</noindex> 
Take me 
<div>nice</div> 
Skip me 
</tr> 

Как я могу получить «Возьми меня» по Селекторы jQuery?
Примечание: $('#test').text() возвращает все тексты: Привет JS ...

+1

Это должно помочь: http://stackoverflow.com/questions/298750/how-do-select-text-nodes-with-jquery –

+0

Вы не можете, легко, с HTML как указано. Лучше всего было бы обернуть «Take me» в тегах (например, span) и выбрать это. В противном случае вы можете получить ВСЕ текст, как вы сказали, затем извлечь текст между тегами noindex и div. Однако это действительно не очень хорошая идея. –

ответ

4

Используйте contents(), чтобы получить все дочерние узлы, затем процеживают через ищет текстовые узлы, которые соответствуют вашим критериям, содержащие "Hello".

$('#test').contents().filter(function() { 
    return this.nodeType == 3 && $.trim(this.data) == 'Take me'; 
}) 

jsFiddle.

+0

просто не имеет смысла явно фильтровать текст, который вы уже знаете. OP должен четко обозначить «критерии выбора». – jAndy

+0

@jAndy Мне это не кажется странным. Возможно, OP хочет изменить этот текстовый узел. – alex

+0

Downvoter, что я напутал? – alex