Как я могу изменить текст элемента, не изменяя его дочерние элементы? - PullRequest
103 голосов
/ 05 ноября 2010

Я бы хотел обновить текст элемента динамически:

<div>
   **text to change**
   <someChild>
       text that should not change
   </someChild>
   <someChild>
       text that should not change
   </someChild>
</div>

Я новичок в jQuery, поэтому эта задача кажется мне довольно сложной.Может кто-нибудь указать мне на функцию / селектор для использования?

Если это возможно, я бы хотел сделать это без добавления нового контейнера для текста, который мне нужно изменить.

Ответы [ 14 ]

0 голосов
/ 04 июля 2017

Это старый вопрос, но вы можете сделать простую функцию, подобную этой, чтобы сделать вашу жизнь проще:

$.fn.toText = function(str) {
    var cache = this.children();
    this.text(str).append(cache);
}

Пример:

<div id="my-div">
   **text to change**
   <p>
       text that should not change
   </p>
   <p>
       text that should not change
   </p>
</div>

Использование:

$("#my-div").toText("helloworld");
0 голосов
/ 18 декабря 2014

Проблема с ответом Марка в том, что вы также получаете пустые текстовые узлы. Решение в виде плагина jQuery:

$.fn.textnodes = function () {
    return this.contents().filter(function (i,n) {
        return n.nodeType == 3 && n.textContent.trim() !== "";
    });
};

$("div").textnodes()[0] = "changed text";
0 голосов
/ 07 февраля 2013

Простой ответ:

$("div").contents().filter(function(){ 
  return this.nodeType == 3; 
})[0].nodeValue = "The text you want to replace with"
0 голосов
/ 05 ноября 2010

Я думаю, что вы ищете .prependTo ().

http://api.jquery.com/prependTo/

Мы также можем выбрать элемент на и вставьте его в другую:

.

$ ( 'h2') prependTo ($ ( 'контейнер.'));

Если элемент выбран таким образом, вставлен в другом месте, он будет перемещен в цель (не клонировано):

<div class="container">  
  <h2>Greetings</h2>
  <div class="inner">Hello</div>
  <div class="inner">Goodbye</div> 
</div>

Если существует более одной цели элемент, однако, клонированные копии вставленный элемент будет создан для каждая цель после первой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...