javascript - 我的将单词包裹在跨度中的算法的缺陷在哪里?

标签 javascript jquery html

所以我有一段代码

// separate pargraph words by spans
$layer.find('p').each(function(){
    var spanned = $(this).html().split(" ").map(function(w){ return '<span class="word">' + w + '</span>'; }).join(" ");
    $(this).html(spanned);
});

尝试将单词(定义为用空格分隔的任何内容)包裹在 <span class="word"> 内和</span>但有些事情是错误的,因为它的结局就像

enter image description here

所有嵌套的东西。那么我所做的事情的缺陷在哪里?

最佳答案

可以清楚地看到 p 标记不仅包含文本,还包含一些 HTML 标记,这导致了此问题,因此不要执行 .html() 执行.text(),这将返回纯文本。

$layer.find('p').each(function(){
    var spanned = $(this).text().split(" ").map(function(w){ return '<span class="word">' + w + '</span>'; }).join(" ");
    $(this).html(spanned);
});

请记住,这将删除任何标签,如 ali ...(这取决于您的用例),但通过看到您的问题,我认为不会你有它们。

也许您也想使用 $.trim 来删除不需要的空格。

关于javascript - 我的将单词包裹在跨度中的算法的缺陷在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36706023/

相关文章:

javascript - 使用 javascript/AJAX 将数据插入 MySQL 数据库

html - 让 text-div 在图像顶部右下对齐

javascript - 将 UL 分成多列

javascript - 未捕获的类型错误 : undefined is not a function when using a jQuery plugin in Magento

javascript - 未捕获( promise ): TypeError: Cannot read property 'router' of undefined

javascript - 将表行转换为输入

javascript - 根据文档使用时 jQuery.on() 不起作用?

java - 简单的 HTML(或 XML)到 Android Native 转换器

javascript - 如何加载外部文件并确保它首先在 JSFiddle 中运行?

c# - 将值传递给 ASP.NET 中的 javascript