所以我有一段代码
// 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>
内包装单词(定义为用空格分隔的任何内容),但出现了错误,因为它的结所有嵌套的东西。那么我做的事情的缺点在哪里?
最佳答案
可以清楚地看到,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);
});
请记住,这将删除任何标记,例如
a
或li
...(这取决于您的用例),但是通过看到您的问题,我认为您没有它们。也许您也想使用
$.trim
删除不需要的空格。关于javascript - 我的西类牙语单词包装算法的缺陷在哪里?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36706023/