jQuery Как редактировать HTML-текст только для текущего уровня? [дублировать]

0

У меня есть структура DOM:

<div id="a">
         AA
        <span>BB</span>
</div>

Я хочу изменить текст в div, но не в промежутке, а именно изменить AA, но сохранить BB, однако, когда я пытаюсь $ ('# a'). Text(), я получаю AABB. Каков правильный способ выбора текста только на уровне div?

Теги:

3 ответа

0

Проверьте, это правильно.

var child = $('#a span');
var value = "new value";
$('#a').text(value + child.html());
  • 1
    Он сказал, что ему нужно сохранить диапазон и BB, поэтому неправильно удалить его!
  • 0
    Спасибо я поменяю
0

Лучший способ сделать это - пересечь дочерние узлы #a и проверить, являются ли они текстовыми узлами. Для каждого текстового узла вам необходимо скопировать внутренний текст и вернуть его:

В качестве общей функции:

function getText($el, separator) {
  var s        = separator || '',
      children = $el.childNodes,
      l        = children.length,
      text     = [],
      child;

  for(; child = children[--l];)
    if (child.nodeType === 3)
      text.unshift(child.nodeValue);

  return text.join(s);
}

Как плагин jQuery

$.fn.getText = function(separator) {
  var s        = separator || '',
      children = this.get(0).childNodes,
      l        = children.length,
      text     = [],
      child;

  for(; child = children[--l];)
    if (child.nodeType === 3)
      text.unshift(child.nodeValue);

  return text.join(s);
}
0

Я создал пример из этой ссылки: Как выбрать собственный текст для элемента с помощью jQuery

Надеюсь, это поможет вам.

HTML

<div id="a">
         AA
        <span>BB</span>
</div>

JAVASCRIPT

$.fn.ownText = function() {
    return this.eq(0).contents().filter(function() {
       return this.nodeType === 3 // && $.trim(this.nodeValue).length;
    }).map(function() {
       return this.nodeValue;
    }).get().join('');
}

var text = $('#a').ownText();

var newText = "CC";

$("#a").html(function(i,t){
    return t.replace(text.trim(), newText)
});

http://jsfiddle.net/guinatal/mHhrL/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню