0

我尝试div在将原始元素从divto替换后包装 ainput但不起作用,任何人都可以建议我下面的代码有什么问题,谢谢。

$('.sth').replaceWith(
    $('<input>', {
        value: $('.sth').text(),
        type: 'text'
    })
).wrap('<div class="new" />');

演示:http: //jsfiddle.net/zhmUK/1/

4

3 回答 3

4

http://api.jquery.com/replaceWith/

用提供的新内容替换匹配元素集中的每个元素,并返回被删除的元素集。

$('.sth').replaceWith(
    $('<input>', {
        value: $('.sth').text(),
        type: 'text'
    }).wrap('<div class="new" />').parent()
);
于 2013-08-13T13:35:59.117 回答
2

replaceWith返回您删除的.sth元素。引文:

.replaceWith() 方法,像大多数 jQuery 方法一样,返回 jQuery 对象,以便其他方法可以链接到它。但是,必须注意返回的是原始的 jQuery 对象。此对象指的是已从 DOM 中删除的元素,而不是替换它的新元素。

所以你包装了错误的元素,不再在 DOM 中的元素。

从这里:http ://api.jquery.com/replaceWith/

于 2013-08-13T13:34:50.197 回答
1

你可以试试

$('.sth').wrap('<div class="new" />').replaceWith(
    $('<input>', {
        value: $('.sth').text(),
        type: 'text'
    })
);
于 2013-08-13T13:36:25.943 回答