2012-06-05 12 views
6

हैलो मैं jQuery का उपयोग करने के एक div में वर्ग तत्वों के सेट रैप करने के लिए चाहते हैं, लेकिन समाधान नहीं मिल सकता हैjQuery एक ही कक्षा पर एक से अधिक div तत्वों लपेट

HTML:

<div class="view-content"> 

    <div class="first">content</div> 
    <div class="first">content</div> 
    <div class="second">content</div> 
    <div class="third">content</div> 
    <div class="third">content</div> 

</div> 

वांछित परिणाम:

<div class="view-content"> 

    <div class="column"> 
     <div class="first">content</div> 
     <div class="first">content</div> 
    </div> 

    <div class="column"> 
     <div class="second">content</div> 
    </div> 

    <div class="column"> 
     <div class="third">content</div> 
     <div class="third">content</div> 
    </div> 

</div> 

अग्रिम में आपकी सहायता के लिए धन्यवाद!

उत्तर

1

आप .wrap() उपयोग कर सकते हैं एक div में कुछ रैप करने के लिए, लेकिन अपनी सामग्री का आदेश दिया नहीं है अगर यह एक गड़बड़ हो जाएगा, यहाँ एक उदाहरण है:

इनपुट

<div class="view-content"> 
    <div class="first">content</div> 
    <div class="second">content</div> 
    <div class="first">content</div> 
</div> 

आउटपुट

<div class="view-content"> 
    <div class="column"> 
     <div class="first">content</div> 
     <div class="column"> 
      <div class="second">content</div> 
     </div> 
     <div class="first">content</div> 
    </div> 
</div> 
6

डेमोhttp://jsfiddle.net/kQz4Z/8/

एपीआई: http://api.jquery.com/wrapAll/

जोड़ा एक ब्रेक लाइन ताकि आप अंतर यहाँ :) http://jsfiddle.net/kQz4Z/10/

कोड

$(function() { 

    $('.first').wrapAll('<div class="column" />') 

    $('.second').wrapAll('<div class="column" />') 

    $('.third').wrapAll('<div class="column" />') 




    alert($('.view-content').html()); 
});​ 
+2

यह विधि गतिशील रूप से: http://jsfiddle.net/kQz4Z/11/ – h2ooooooo

+0

@ h2ooooooo यहां आप http://jsfiddle.net/ZXb4Y/1/ :) जाओ अच्छा है! यदि आप चाहें तो इसे अपने उत्तर के रूप में सेट करें, चीयर्स। –

+1

दोस्तों, और कैसे [मेरा गतिशील] (http://stackoverflow.com/a/10896724/1249581) के बारे में? :) – VisioN

2

उपयोग wrapAll() विधि

$(function(){ 
    var classes = ['.first', '.second', '.third']; 

    for (i = 0; i < classes.length; i++) { 
     $(classes[i]).wrapAll('<div class="column">'); 
    }​ 

}); 
देख सकते हैं

डेमो: http://jsfiddle.net/g9G85/

​$(".view-content > div").each(function() { 
    $(".view-content > ." + this.className).wrapAll("<div class='column' />"); 
});​ 

डेमो:http://jsfiddle.net/CqzWy/

2

या यहाँ बहुत ही कम गतिशील समाधान है

var arr = $(".view-content div").map(function() { return $(this).attr('class'); }).get(); 
var results = $.unique(arr); 
var i; 

for(i = 0; i < results.length; i++){ 

    $('.out').append('<div class="columns"></div>'); 
    $('.'+results[i]).clone().appendTo('.columns:last'); 
} 

alert($('.out').html()); 
यहाँ

एक उदाहरण:

JSFIDDLE

+0

यह ध्यान दिया जाना चाहिए कि इस विधि को अपने वर्तमान रूप में दिखाए गए अनुसार बाल संयोजक चयनकर्ता (>) को नियोजित करना चाहिए। ऐसा करने में विफलता के परिणामस्वरूप प्रत्येक आइटम के लिए एक रैपिंग div होगा जो एक निश्चित वर्गनाम से मेल खाता है। (उदाहरण के लिए, इस मामले में, वर्ग "तीसरा" वर्ग के साथ divs "div" वर्ग के साथ दो divs में लपेटा जाएगा)। – Luke

0

आप कोशिश इस कण सकता है:

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