在div标签中包装形式不佳的html

时间:2016-03-17 14:36:36

标签: javascript jquery html

我知道这听起来像是一个不好的举动我应该只编辑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标签中?

3 个答案:

答案 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/

我将要与字段集匹配的内容包装得更明显