首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取包含特定元素的完整单词

获取包含特定元素的完整单词
EN

Stack Overflow用户
提问于 2016-06-05 08:25:56
回答 1查看 115关注 0票数 7

有了对特定DOM元素(例如<mark>)的引用,我们如何才能获得包含该元素的完整单词?

例如:

代码语言:javascript
复制
H<mark>ell</mark>o Wor<mark>l</mark>d, and He<mark>llo</mark>, <mark>Pluto</mark>!

我希望得到以下输出:

  • First <mark>Hello
  • 第二:World
  • 第三:Hello
  • 第四:Pluto

代码语言:javascript
复制
var $marks = $("mark");

var tests = [
  "Hello",
  "World",
  "Hello",
  "Pluto",
];

function getFullWord($elm) {
  // TODO: How can I do this?
  // 		   This is obviously wrong.
  return $elm.html();
}

var $marks = $("mark");
tests.forEach(function(c, i) {
  var word = getFullWord($marks.eq(i));
  if (word !== c) {
    alert("Wrong result for index " + i + ". Expected: '" + c + "' but got '" + word + "'");
  }
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
H<mark>ell</mark>o Wor<mark>l</mark>d, and He<mark>llo</mark>, <mark>Pluto</mark>!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-05 08:45:56

如果您需要快速而紧凑的代码(一行代码),请尝试如下:

代码语言:javascript
复制
var $marks = $('mark');

$marks.each(function() {
    var wholeWord = (this.previousSibling.nodeValue.split(' ').pop() + 
                     this.textContent + 
                     this.nextSibling.nodeValue.split(' ')[0]
                     ).replace(/[^\w\s]/gi, '');
});

JSFiddle (通过登录到控制台和注释)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37639884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档