2012-11-28 4 views
-1

Я хочу получить тексты в своем div, но не тексты в дочернем div.Как получить тексты без текстов дочерних элементов

Я

HTML

<div id='textDiv'> 
     texts I want to get 
      <span id='textChildDiv'> 
      texts I don't want 
      </span> 
    </div> 

JQuery

$('#textDiv').click(function(){ 
     alert($(this).text()) //will get 'texts I want to gettexts I don't want' 
     //I only want 'texts I want to get' to be returned. 
    }) 

Я нашел

http://viralpatel.net/blogs/jquery-get-text-element-without-child-element/

для моих soulution бушель Кажется, что есть лучший подход, чем его способ.

Любые идеи? Большое спасибо!

+0

вы пробовали это: http://stackoverflow.com/ вопросы/9955955/get-text-of-an-element-without-children-in-javascript –

+0

Решение, которое вы опубликовали, абсолютно корректно. –

+0

Ссылка, которую вы предоставили, делает то, что вы хотите - что вам не нравится в ней, и что вы хотите улучшить? – freejosh

ответ

2

Попробуйте использовать

$('#textDiv').click(function(){ 

    alert($(this).contents().filter(function() { 
     return this.nodeType === 3; 
     }).text()) 
});​ 

Как и в этой скрипкой: http://jsfiddle.net/jQf6d/

+0

Поскольку Давид - это первый ответ. Я дам ему зеленый цвет! спасибо всем, кто помогает парням. все +1 – FlyingCat

+0

@FlyingCat Ну, на самом деле вы можете получить точное время ответа, наведя значение времени, которое выше имени автора и аватара. Он должен дать вам правильную последовательность ответов. – VisioN

2

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

DEMO:http://jsfiddle.net/pyaAN/

var result = ''; 
    $('#textDiv').contents().each(function() { 
     if (this.nodeType == 3 && $.trim($(this).text()).length > 0) { 
      result += this.nodeValue; 
     } 
    }); 
Смежные вопросы