如何使用jQuery使用动态生成的元素包装页面元素?

时间:2009-06-24 03:08:21

标签: javascript jquery dom-manipulation

我有以下代码

var input = $('#el_id');
wrapper = $(document.createElement('div'));
wrapper.addClass('small');
wrapper.css('width',200);
input.wrap(wrapper);

alert(input.children().length)

我的孩子长度为0。我想要的是:

<div class="small" style="width: 200px;">
     <input type="text" id="el_id" />
</div>

但我希望动态生成小div。知道为什么这不起作用吗?

更新

事实证明我的问题在于另一行代码。我想在换行后将包装器分配给变量:

block = input.wrap("<div class='"+container_class+"' style='width: "+wrap_width+"px;'></div>");

不起作用。它返回有意义的输入。但是如何返回包装器?

谢谢!

3 个答案:

答案 0 :(得分:2)

我相信你做得对。

您只需将wrap函数的结果保存到变量:

修改:更新代码以获取parent():

var wrapped = input.wrap(wrapper).parent();
alert(wrapped.children().length);

答案 1 :(得分:0)

documentation开始,wrap()似乎只接受DOM元素或字符串。你传给它一个jQuery对象,这可能无法正常工作。我试试这个:

$('#el_id').wrap('<div class="small" style="width: 200px;"></div>');

答案 2 :(得分:0)

简单。您正在尝试使用jquery对象进行换行,而不是使用wrap()函数所期望的dom对象。