2012-06-27 15 views
5

मैं तत्वों एक और तत्व के साथ फ्लाई पर बनाए जाते हैं की एक उत्पन्न श्रृंखला रैप करने के लिए, उदाहरण के लिए कोशिश कर रहा हूँ:jQuery wrapAll व्यवहार नहीं कर के रूप में उम्मीद

var innerHtmlAsText = "<li>test1</li><li>test2</li>"; 
var wrapper = "<ul />"; 

$("div#target").append($(innerHtmlAsText).wrapAll(wrapper)); 

मेरे अपेक्षित परिणाम

<ul> 
    <li>test1</li> 
    <li>test2</li> 
</ul> 

है लेकिन वास्तविक परिणाम है:

<li>test1</li> 
<li>test2</li> 

li तत्वों लिपटे नहीं कर रहे हैं। मेरे उदाहरण में उपयोगकर्ता द्वारा जेनरेट किए गए टेम्पलेट से फ्लाई पर आंतरिक एचटीएमएल उत्पन्न होता है और रैपर को अलग से आपूर्ति की जाती है। मैं आंतरिक मूल्यों को लपेट कैसे प्राप्त कर सकता हूं?

+1

'$ (आवरण) .append (innerHtmlAsText) .appendTo ('div # लक्ष्य'); बिना नेस्ट jQuery कॉल', एक ही करना होगा। – Yoshi

उत्तर

8

wrapAll मूल jQuery ऑब्जेक्ट देता है, न कि नया। तो, wrapAll<li> एस लौटा रहा है, क्योंकि यह ऑब्जेक्ट है कि wrapAll पर कॉल किया गया था।

इस प्रयास करें:

$("div#target").append($(innerHtmlAsText).wrapAll(wrapper).parent()); 
+0

मैं बस इस तरह कुछ लिख रहा था ... – elclanrs

+1

@elclanrs: ग्रेट दिमाग एक जैसे सोचते हैं :-) –

2

क्योंकि wrapAll आवरण वापस नहीं करता होता है यही कारण है कि है, लेकिन मूल वस्तु यह (सबसे jQuery कार्यों के रूप में) के लिए आवेदन किया था।

उपयोग .parent()ul तत्व को पाने के लिए ..

$("div#target").append($(innerHtmlAsText).wrapAll(wrapper).parent()); 
1

यह केवल .append() साथ भी संभव है।

var innerHtmlAsText = "<li>test1</li><li>test2</li>"; 
var wrapper = "<ul/>"; 

$("div#target").append($(wrapper).append(innerHtmlAsText)); 

DEMO

+0

@ilivewithian मुझे लगता है कि यह केवल '.append' – thecodeparadox

+0

+1 के साथ किया जा सकता है यह मुझे लगता है कि यह सबसे अच्छा तरीका है। – defau1t

संबंधित मुद्दे