我有以下代码
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>");
不起作用。它返回有意义的输入。但是如何返回包装器?
谢谢!
答案 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对象。