-1
4

2 回答 2

4

用于.text()剥离 html 标签并获取文本。

var split = $this.text().split("/")

JSFiddle

如果您想在结果中保留 html 标记,一个简单的解决方案是为您的分数使用不同的分隔符,例如双斜杠//、反斜杠\或管道|JSFiddle

使用这个答案,您还可以使用正则表达式来验证它是否仅在内部找不到字符时才拆分<..>JSFiddle

var split = $this.html().split(/\/(?=[^>]*(?:<|$))/)
于 2016-04-28T01:27:58.343 回答
1

如果你想正确地做到这一点(同时保留你的标记),它会变得有点复杂,因为你需要一个位于元素直接子.fraction元素的文本节点中的斜线;并且 jQuery 不能很好地处理文本节点。所以:

$(function() {
  $('.fraction').each(function(_, e) {
    var offset = 0, html = '<span class="top">', found = false;
    $.each(e.childNodes, function(_, c) {
      if (c.nodeType == Node.TEXT_NODE) {
        if (m = c.textContent.match(/(.*)\/(.*)/)) {
          found = true;
          html += m[1] + '</span>/<span class="bottom">' + m[2];
        } else {
          html += c.textContent;
        }
      } else {
        html += c.outerHTML;
      };
    });
    if (found) {
      e.innerHTML = html + '</span>';
    }
  });
});
.top {
  color: red;
}
.bottom {
  color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="fraction"><strike>1</strike>/2</span>
<span class="fraction">2/2</span>

于 2016-04-28T01:45:59.150 回答