1

首先:我是 jQuery 新手。我尝试使用 jQuery 将段落标签放入 h2 标签中。网站建立在 CMS 上,因此 HTML 由 CMS 生成。但我可以给你一些 HTML 代码和一个简短的 jQuery 代码,我之前尝试过:

HTML:

<div id="container">
    <h2>Title goes here</h2>
</div>

jQuery:

$(document).ready(function(){
    $('#container').find('h1').replaceWith(function(){
        return '<h2>' + $(this).text() + '</h2>';
    });
    $('<p></p>').prependTo('h2');
});

jQuery 代码使用我的 HTML 代码执行此操作(还不错,只需对其进行优化):

<div id="container">
    <h2>
    <p></p>
    Title goes here
    </h2>
</div>

我现在的问题是,我想将“标题在此处”放入p标签中。是否有一个 jQuery 函数可以做到这一点,还是我完全错了?我已经查看了jQuery API 文档,但没有找到任何可以帮助我的东西。有什么建议么?

干杯

PS:这是一个小提琴:Demo

4

3 回答 3

4

这很容易:您选择 with 的内容,h2然后contents将它们全部包装在pwith 中wrapAll。您可以将它与函数语法结合起来,replaceWith在一行中完成所有操作。

$('h1').replaceWith(function(this) {
    return $(this).contents().wrapAll('<h2/>').wrapAll('<p/>').closest('h2');
});

一个更好的问题是你为什么要这样做。h2元素可能不包含p元素。

更新了小提琴。

于 2013-10-30T07:43:43.383 回答
2

您正在尝试的是无效的HTML,因此,将标签附加到字符串将不起作用,因为浏览器将以有效的方式解析这些标签,因此它将关闭p标签,然后呈现h1标签。

在此处输入图像描述

将下面的代码复制粘贴到此处的“通过直接输入验证”选项卡上,然后自己检查一下

<!DOCTYPE html>
  <head>
    <title>Test</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <h1><p>This is invalid</p></h1>
  </body>
</html>
于 2013-10-30T07:43:58.963 回答
0

我认为您正在寻找的是 jquery clone()。克隆所需的段落,然后将其附加到所需的 dom 元素。http://api.jquery.com/clone/

于 2013-10-30T07:43:06.063 回答