我在谷歌或这里找不到任何相关信息.
我有一个div,一些文本和一些HTML如下:
<div id="test-div">
http://<strong>somewebsite.com</strong>/big/long/unfriendly/path/
</div>
Run Code Online (Sandbox Code Playgroud)
我想要做的是<wbr>在每个斜线之后添加一个.(因为该值不会另外包裹并且弄乱了我的桌子).在$('#test-div').html()遗嘱上做一个简单的替换也会弄乱强标签,所以这不是一个选择.
我想$('#test-div').contents()用过滤掉文本部分(递归)会起作用.但是我似乎无法编辑返回的各个位.我希望这会改变http://部分:
$('#test-div').contents().first().text("something");
Run Code Online (Sandbox Code Playgroud)
但它什么都没做.我知道我的导航正确,因为这样的事情:
$('#test-div').contents().first().wrap( "<b></b>" );
Run Code Online (Sandbox Code Playgroud)
确实有效.
为什么我不能改变文本位?(对最初问题更优雅的解决方案也会很棒)
最终,由于这个和这个项目,我找到了自己的答案。我现在有一个函数可以替换上下文中所有文本节点中的所有文本。它还可以将 HTML 插入到所述节点中。
JavaScript 函数:
function recursiveReplace(node, oldValue, newValue) {
if (node.nodeType === 3) { // text node
$(node).replaceWith(node.nodeValue.replace(oldValue, newValue));
} else if (node.nodeType === 1) { // element
$(node).contents().each(function() {
recursiveReplace(this, oldValue, newValue);
});
}
}
//To call
div = $('#test-div');
recursiveReplace(div[0], "/", "/<wbr />");
Run Code Online (Sandbox Code Playgroud)
这以通用的方式解决了这个问题。
| 归档时间: |
|
| 查看次数: |
575 次 |
| 最近记录: |