jQuery

2011-08-16 4 views
5

के साथ दो अन्य divs के चारों ओर रैपर div बनाएँ, मैं 2 (या अधिक) div के चारों ओर एक div तत्व कैसे जोड़ सकता हूं? मैं क्या लगता है कि:jQuery

HTML:

<div class="list-price">20000</div> 
<div class="sell-price">10000</div> 

jQuery:

$('div.list-price').each(function() { 
    $(this).before('<div class="action-price">'); 
    $(this).next().after('</div>'); 
    }); 

मुझे आशा थी कि इसके बाद के संस्करण कोड ऐसा करेंगे:

<div class="action-price"> 
<div class="list-price">20000</div> 
<div class="sell-price">10000</div> 
</div> 

लेकिन:

<div class="action-price"></div> 
<div class="list-price">20000</div> 
<div class="sell-price">10000</div> 

क्या कोई मेरी मदद कर सकता है?

धन्यवाद,

गेबर

+0

अपने पहले और प्रयोगों के बाद अमान्य हैं के रूप में इन तरीकों दस्तावेज़ सामग्री को पाठ लिखने नहीं है, बल्कि वे _nodes_ लिखें। इसलिए, पहला ('पहले') अमान्य मार्कअप – Guard

उत्तर

1

आप एचटीएमएल कोड के रूप में तत्वों की सोच रहे हैं, लेकिन वे वस्तुएं हैं। आप प्रारंभिक और समापन टैग को अलग से नहीं जोड़ सकते हैं, क्योंकि वे पूर्ण तत्व नहीं हैं।

नए तत्व जोड़ें, और इसके अंदर मौजूदा divs के लिए कदम:

$('div.list-price').each(function() { 
    var newDiv = $('<div/>').addClass('action-price'); 
    $(this).before(newDiv); 
    var next = $(this).next(); 
    newDiv.append(this).append(next); 
}); 

डेमो:

$ बाकी: http://jsfiddle.net/Guffa/eFXbN/1/

+0

थक्स गुफा के कारण ऑटो-क्लोजिंग (बी jQuery स्वयं) टैग को छोड़ देता है, और दूसरा ('बाद') छोड़ देता है, आप सही हैं, लेकिन प्रत्येक के अंदर एक पंक्ति गुम है (): $ (यह)। मूल ('div')। AddClass ('action-price'); – riskogab

+0

@ रिस्कोगैब: मैंने पहले ही इसे जोड़ा है, और डेमो के लिए एक लिंक भी जोड़ा है। :) – Guffa

+2

मेरा दृष्टिकोण और उत्तर, इसका क्लीनर देखें। http://jsfiddle.net/blowsie/eFXbN/7/ – Blowsie

0
$first = ... // the 1st element 
$rest = ... // other elements, may be just the second one 
$first.wrap('<div class="wrapper"/>').parent().append($rest) 
0

मैं करने के लिए अपने अंतिम पंक्ति revese करना पड़ा। लपेट ('') माता-पिता() ($ पहले) जोड़ देते हैं।।

1

इसके लिए एक अच्छा दृष्टिकोण निम्नलिखित करना है।

$("div.list-price").each(function(){ 
    $(this).nextUntil("div.list-price").andSelf().wrapAll("<div class='action-price'></div>"); 
}); 

इसका सरल और पठनीय, शायद रास्ता jQuery devs इसे इरादा लिखे जाने की।

6

wrapAll समारोह उपयोग करके देखें:

$('.list-price, .sell-price').wrapAll('<div class="action-price" />');