Выбор только текст элемента (не текст его детей/потомков)

Рассмотрите следующий HTML:

<td>
  Some Text
  <table>.....</table>
</td>

Я должен управлять "Некоторым текстом" текст td элемент. Я не должен касаться элемента таблицы в этом td.

Так, просто например, возможно, я хочу заменить весь "e". Я попробовал несколько подходов .text jQuery () и .html (). Я, кажется, всегда выбираю что-то из дочерней таблицы, которой я не должен касаться. Кроме того, к сожалению, я не могу перенести "Некоторый текст" в промежуток или отделение.

8
задан Phrogz 22 November 2011 в 18:43
поделиться

2 ответа

$(function(){
  $('td').contents().each(function(){
     if(this.nodeType === 3)
      $(this).replaceWith(this.wholeText.replace(/e/g, '#'));
  });
});

или как вы предложили

$('td').contents().each(function(){
  if(this.nodeType === 3)
     this.data = this.wholeText.replace(/e/g, '#');
 });

.contents () доставляет все элементов, включая textNodes .

7
ответ дан 5 December 2019 в 15:19
поделиться

Если вы хотите сделать что-то для каждого фрагмента текста в td, вы можете просто перебирать их с помощью цикла:

var nodes=tdEl.childNodes;
for(var i=0; i<nodes.length; ++i){
  if(nodes[i].nodeType===3){  // 3 means "text"
    nodes[i].data = nodes[i].wholeText.replace(/e/g, '@');
  }
}

Я правильно понял, что вы ищете?

Вы можете использовать jQuery, если вы уже загружаете его для других вещей, но я бы не стал загружать библиотеку размером 24 кб для маленького кусочка кода выше.

4
ответ дан 5 December 2019 в 15:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: