我知道这听起来像是一个不好的举动我应该只编辑html,但我真的别无选择。我正在使用救援组的模板,无法访问html,只能访问有限的样式。要访问javascript,我正在攻击tinymce插件来注入脚本。
html的形成非常糟糕,而且大多数情况下我都可以在它周围进行攻击,但我发现自己处于需要在某些html周围放置一个div的情况,所以我可以给它一个类和他们的风格。然而,几乎没有什么可去的。
重复的html看起来像这样。这是我需要包含在div中的html。
<b>Text</b>
<br>
"Some Text here annoyingly placed outside a tag."
<br>
"More text outside a tag."
<br>
"Title outside of tag"
<a>Link</a>
<br>
<br>
"More text and then a link"
<a>Link</a>
<br>
<br>
<a>Ending Link</a>
<hr>
完整的html就在这个小提琴中http://localhost:3000/users/edit很少有id,很少有人可以使用。
无论如何使用jquery / javascript将它包装在div标签中?
答案 0 :(得分:0)
目前还不是很清楚。 但是,如果我有点理解,你可以将身体html作为一个字符串, 通过子串的一系列操作添加您需要的东西。 然后用新的html替换body html。
但这是客户端的事吗?
答案 1 :(得分:0)
不是最好的解决方案,但你可以试试这个:
document.body.innerHTML = document.body.innerHTML.replace('<a name=Event' '<div><a name=Event');
document.body.innerHTML = document.body.innerHTML.replace('event.<br><br>', 'event.<br><br></div>');
这远非最佳解决方案,但找到模式然后替换它们将是一个良好的开端。
这个堆栈帮助了我: Replace words in the body text
答案 2 :(得分:0)
与nextUntil
相关联的jQuery函数wrapAll
可以做到这一点。根据您的HTML,这样的事情可以完成这项工作:
$('hr').each(function() {
$(this).nextUntil('hr').wrapAll('<fieldset />')
});
以下是您更新的jsfiddle:https://jsfiddle.net/5hudL6vk/
我将要与字段集匹配的内容包装得更明显