我正在尝试抓取一个特定的字符串,"(文本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获取特定字符串?
正如你的帖子所暗示的,如果你想创建一个自定义.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)