2012-03-02 15 views
16

क्या अगली बार आसानी से करने का कोई तरीका है, ताकि चयनकर्ता द्वारा मिलान किया गया तत्व शामिल हो?अगला jQuery, मिलान किए गए तत्व को छोड़कर, सहित, सहित?

$("#content").find("h3:first").prev().nextUntil("ul:last").wrapAll("<div id='collapse'></div>"); 
+1

आप अपने HTML मार्कअप के प्रासंगिक भागों के साथ अपने प्रश्न अद्यतन कर सकता हूँ है? इससे हमें यह समझने में मदद मिलेगी कि आप क्या हासिल करने की कोशिश कर रहे हैं। –

उत्तर

20

.prev() निकालें और अपने चयनकर्ता के अंत में .addBack() का उपयोग के रूप में नीचे दिखाया गया है:

$("#content").find("h3:first").nextUntil("ul:last").addBack().wrapAll("<div id='collapse'></div>"); 

पूर्व 1.8 के बजाय addBack

+7

इस पुराने प्रश्न पर कभी जवाब नहीं दिया गया था। एफवाईआई, अब कोई भी इसे जांच रहा है: "और स्वयं() - नोट: यह फ़ंक्शन बहिष्कृत कर दिया गया है और अब .addBack() के लिए उपनाम है, जिसका उपयोग jQuery 1.8 और बाद में किया जाना चाहिए।" – jwinn

+0

मैंने अभी इस जवाब को आज खोजा है (21-07-2017) और इससे मुझे मेरी परियोजना में मदद मिली, ty – samouray

-1
निश्चित रूप से

आप, बस का उपयोग कर सकते jQuery nextAll: मैं इस जो केवल ठीक है अगर वहाँ एक पिछले भाई है,।

'nextAll' में उस चयनकर्ता से मेल खाने वाले निम्न तत्व शामिल होंगे।

जबकि 'nextUntil' मिलान चयनकर्ता तत्व को बाहर कर दें।

+0

"अगला" सिर्फ एक ही निम्नलिखित भाई को प्राप्त करता है, जबकि मैं परिभाषित अंत-बिंदु तक सभी भाई बहनों को पकड़ रहा हूं। – jwinn

+0

हाँ आप सही हैं, मेरा जवाब बदल रहा है। –

+0

-1: अगलीअसल से() रेफरी: मिलान किए गए तत्वों के सेट में प्रत्येक तत्व के प्रत्येक ** भाई बहनों को निम्नलिखित ** प्राप्त करें, वैकल्पिक रूप से एक चयनकर्ता द्वारा फ़िल्टर किया गया। , तो यह ** ** ** मिलान तत्व शामिल नहीं होगा। –

1

वैकल्पिक हल मैंने पाया length का उपयोग कर nextUntil (या prevUntil), तो slice() इस लंबाई + 1 के साथ nextAll() पर उपयोग मिल गया था:

var inclusiveNextUntil = $(this).nextUntil('.some-class').length; 
var inclusiveNextUntil = $(this).nextAll().slice(0 , inclusiveNextUntil + 1); 

यह अनाड़ी है, लेकिन यह काम करता है। HTH

Fwiw in the nextAll docs Biziclop mentions+ * जोड़ने:

$obj.nextUntil('.last-item-to-include + *') 

लेकिन यह मेरे लिए काम नहीं करता है:/

1

यहाँ मैं क्या कर रहा है। मुझे लगता है कि यह अन्य सुझावों की तुलना में थोड़ा क्लीनर है।

var elearr = $('selector1').nextUntil('selector2'); 
var lastele = elearr[elearr.length-1]; 
elearr.push($(lastele).next()); 
0
var s = $("li.start").nextUntil("li.stop"); 
s = s.add(s.last().next()).add(s.first().prev()); 
//and do whatever you need to with s 

सबसे सहज, मुझे लगता है कि andSelf का उपयोग करना चाहिए । सभी jQuery विधियों के साथ बनाया गया। दो बार खोजने की आवश्यकता नहीं है। समझने में आसान और याद रखना आसान है।

0

मुझे लगता है कि सही जवाब

$("#content").find("h3:first").nextUntil("ul:last").addSelf().wrapAll("<div id='collapse'></div>"); 
संबंधित मुद्दे