当前位置:  开发笔记 > 编程语言 > 正文

获取元素后的特定文本节点

如何解决《获取元素后的特定文本节点》经验,为你挑选了1个好方法。

我正在尝试抓取一个特定的字符串,"(文本1)","(文本2)"等等我无法更改HTML.

当我这样做:

$(this).parent().html(); // $(this) is equivalent to $('a.more').

我明白了:

Event 1 (TEXT 1)
Event 2 (TEXT 2)
Event 3 (TEXT 3)

我已经试过这和这.

我似乎无法获得特定的"(TEXT n)".理想情况下,我想得到一个特定的"(TEXT n)".有点像:

$('a.more').nextText(1); // this would return " (TEXT 2)"

如何使用JavaScript或jQuery获取特定字符串?



1> Josh Crozier..:

正如你的帖子所暗示的,如果你想创建一个自定义.nextText()方法,只需访问DOM元素的下一个兄弟的nodeValue属性:

$.fn.nextText = function() {
  return this.length ? this[0].nextSibling.nodeValue : null;
};

然后,您可以使用该.eq()方法通过索引获取元素并使用自定义方法:

这里的例子

var text = $('.more').eq(0).nextText();
console.log(text); // (TEXT 1)

如果要添加参数以传递要从中检索文本的元素的索引:

这里的例子

$.fn.nextText = function(index) {
  return this.length ? this[index || 0].nextSibling.nodeValue : null;
};

var text = $('.more').nextText(1);
console.log(text); // (TEXT 2)

如果要获取多个元素和文本节点,直到特定元素(如OP在注释中所做的那样),您可以使用此自定义.nextTextUntil()方法:

这里的例子

$.fn.nextTextUntil = function(until) {
  var text = '', next;

  if (this.length) {
    next = this[0].nextSibling;

    while (next !== null && until && !$(next).is(until)) {
      text += next.nodeValue || next.textContent;
      next = next.nextSibling;
    }
  }

  return text;
};

用法:

$('.more').eq(0).nextTextUntil('.more');

会回来:

(TEXT 1 MORE TEXT)

基于以下HTML:

Event 1 (TEXT 1 MORE TEXT)

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有