使用Jquery 1.7.1
我有两个div
<div class="highlightStart"></div>
{page content here}
<div class="highlightEnd"></div>
那些显示在页面源中。但是我在页面底部添加的这个jquery无效:
<script type="text/javascript" id="makeHighlight">
$(document).ready(function () {
$("div.highlightStart").replaceWith("<section class='highlight'>");
$("div.highlightEnd").replaceWith("</section>");
});
</script>
浏览器控制台(Chrome)中未显示任何javascript错误。什么都没有被取代。
答案 0 :(得分:2)
首先,我想发现你生成了一个不正确的DOM结构。如果您的脚本将运行,它将如下所示:
<div class="highlightStart"><section></div>
{page content here}
<div class="highlightEnd"></section></div>
如果你想要的话,这不是一个好的结构:
<section>
{page content here}
</section>
应该是这样的:
你的DOM:
<div id="content">
{page content here}
</div>
在你的剧本中:
$(document).ready(function () {
content = $('#content').text();
$('#content').html($('<section>').text(content));
});
请参阅myfiddle以获取参考
答案 1 :(得分:1)
replaceWith方法需要整个元素,而不是标记。您需要使用新元素包装页面内容,然后删除两个原始div。
更新:这可能会让你关闭:
$(document).ready(function () {
$('.highlightStart').nextUntil('.highlightEnd').andSelf()
.wrap('<section class="highlight"></section>');
$('.highlightStart, .hightlightEnd').remove();
});
http://jsfiddle.net/isherwood/H36UE
有些事与此有关,但我没时间了。祝你好运。
答案 2 :(得分:1)
根据isherwood的帮助,使用此作为解决方案:
使用这样的HTML树:
<div><div><div class="highlightStart">highlightStart</div></div></div>
<div>Outside<div>Content to Highlight</div>More</div>
<div>second</div>
<div>third</div>
<div><div><div class="highlightEnd">highlightEnd</div></div></div>
这个Javascript:
$(document).ready(function () {
$('.highlightStart').parent().parent().replaceWith("<div class='highlightStart'>");
$('.highlightEnd').parent().parent().replaceWith("<div class='highlightEnd'>");
$('.highlightStart').nextUntil('.highlightEnd').andSelf().wrapAll("<section class='highlight'>");
$('.highlightStart, .highlightEnd').remove();
});