javascript - 如何拆分从 `div` 元素检索到的文本

标签 javascript jquery arrays

我有这个 HTML:

<div class="chip">java<span class="material-icons close">×</span></div>
<div class="chip">spring<span class="material-icons close">×</span></div>
<div class="chip">python<span class="material-icons close">×</span></div>

通过以下脚本,我尝试检索不带 x 的文本。我使用类名获取 div 元素的值,但是当传递它来分割它时,相同的字符串返回而不进行任何分割:

var skills = $('.chip').text();
var arr = skills.split('x');
for(var i=0;i<arr.length;i++){
    alert(arr[i]);
}

例如:

var skills = 'javaxspringxpython';

输出保持不变。我知道这是因为 .text() 方法,但不知道如何解决这个问题。我尝试使用 .val(),但这不起作用。

我该如何解决这个问题?

最佳答案

您的 HTML 已经包含三个独立的元素。

您可以获取标签的各个内容,并从该内容中剔除任何其他标签(在您的情况下为 span 元素),而不是拆分组合文本。然后您将拥有三个匹配的文本节点,然后需要将其映射到数组项:

var skills = $('.chip').contents().filter(function() {
    return this.nodeType === 3; // only immediate text in div, not in span
}).map(function() {
    return $(this).text();
}).get();

console.log(skills);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="chip">java<span class="material-icons close">×</span></div>
<div class="chip">spring<span class="material-icons close">×</span></div>
<div class="chip">python<span class="material-icons close">×</span></div>

关于javascript - 如何拆分从 `div` 元素检索到的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42611045/

相关文章:

javascript - Uncaught ReferenceError : webkitNotifications is not defined

javascript - 检索单击元素的父级

Javascript 移除所有空的 innerHTML 子元素

javascript - 在页面加载时显示网格

java - 在不同平台上字节到字符串的转换,反之亦然

javascript - 在文本框内添加按钮

javascript - 为下拉菜单添加悬停延迟

javascript - 剧透部分打开后如何保持格式?

javascript - Object.assign() 和对象数组

android - 解析 JSONArray Android 中的 JSONObject 时出错