jQuery在replaceWith方法之后包装一个元素但不起作用

时间:2013-08-13 13:30:07

标签: jquery replacewith

我在将原始元素从div替换为div之后尝试换input但不起作用,有人可能会在下面建议我的代码有什么问题,谢谢。

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

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

3 个答案:

答案 0 :(得分:4)

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

  

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

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

答案 1 :(得分:2)

replaceWith会返回已移除的.sth元素。引文:

  

与大多数jQuery方法一样,.replaceWith()方法返回   jQuery对象,以便可以将其他方法链接到它上面。然而,   必须注意的是返回原始的jQuery对象。这个   object指的是从DOM中删除的元素,而不是   已取代它的新元素。

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

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

答案 2 :(得分:1)

你可以尝试

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