2009-06-24 54 views
0

我有以下代碼如何使用jQuery將動態生成元素的頁面元素包裝起來?

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> 

但我想小動態生成。任何想法爲什麼這不起作用?

UPDATE

事實證明了我的問題在於對另一行代碼。我想在包裝後將包裝分配給變量並且:

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

不起作用。它返回有意義的輸入。但是我怎麼能返回包裝?

謝謝!

回答

2

我相信你是對的。

你只需要在保鮮功能的結果保存到一個變量:

編輯:更新的代碼來獲取父():

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

擰你的東西在你的例子中被「包裹」並沒有返回相同的結果,就好像我只是用$('wrapper_id')來獲取包裝元素一樣。你知道這是爲什麼嗎? – Tony 2009-06-24 03:21:59

0

documentation看來,wrap()只接受DOM元素或字符串。你傳遞給它一個jQuery對象,這可能無法正常工作。我想試試這個:

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

簡單。你試圖用jquery對象包裝而不是wrap()函數期望的dom對象。

相關問題