如何使用jQuery获取给定元素之前的文本?
让我们考虑以下html代码:
Some text followed by a span element and another text followed by a bold text.
如何使用jQuery获取span
和b
元素之前的文本?
我尝试了$("span").prev()
和$("b").prev()
但它确实有效,因为文本不是元素。 我也试过$("span").parent()
但它匹配整个段落,而我只想要它的一部分。
你能告诉任何解决方案吗? 先感谢您 :-)
如何将它们收集到一个数组而不是两次调用$
:
var texts = $('span, b').map(function(){ return this.previousSibling.nodeValue }); texts[0]; // "Some text followed by " texts[1]; // " and another text followed by "
参考文献:
-
previousSibling
属性 - jQuery.map
我担心你需要使用正则表达式。 为了在span元素之前获取文本,请使用以下内容:
var txt = $('span').parent().html(); var regex = /(.*)/; txt = txt.match(regex)[1];
修改正则表达式以匹配字符串的其他部分。
var textBefore = $('span')[0].previousSibling.nodeValue;
我一直在寻找解决方案,并且为什么我需要映射到数组而感到困惑。 上下文对我不起作用。 我终于想出了如何写它。
这是最基本的解决方案。 使用[0]将元素转换为elementNode,允许您调用previousSibling代码。 除非更方便,否则无需使用map函数将其放入数组中。
我想出了以下解决方案:
var c = $("span").context.previousSibling; alert(c.data);
但我不确定使用不同的浏览器时有多安全?