2012-02-07 15 views
11

मैं पूरे शरीर में सब कुछ को हटाने के लिए, एक भी तत्व और उसके बच्चों के अलावा कोशिश कर रहा हूँ। मैं यह कैसे हासिल कर सकता हूं?jQuery - एक ही तत्व और उसके बच्चों के अलावा सब कुछ का चयन करें?

संपादित करें 1 निम्न मार्कअप पर विचार करें:

<html> 
    <body> 
     <div id="div1"></div> 
     <div id="div2"> 
     <div id="elementNotToRemove"></div> 
     </div> 
     <div id="div3"></div> 
     <div id="div4"></div> 
    </body> 
</html> 

उपरोक्त उदाहरण में, मैं अपने बच्चों के रूप में, div1, DIV3 और Div4 को दूर करने के साथ ही, लेकिन DIV2 संरक्षण चाहते हैं, क्योंकि यह तत्व शामिल हटाने के लिए नहीं।

उत्तर

19
$("body > *").not("body > #elementtokeep").remove(); 

आप जो कुछ भी आप के साथ

+0

लेकिन क्या होगा यदि तत्वों की गहराई शरीर के प्रत्यक्ष बच्चों की तुलना में गहरी है? –

+0

एक तत्व को निकालने से यह सभी बच्चों –

+0

हाँ निकल जाएगी, लेकिन है कि मैं क्या मतलब नहीं है। मैंने मूल खोज में थोड़ा सा स्पष्ट किया। –

4

रखना चाहते हैं नहीं() हिस्सा जगह ले सकता है आप इस तरह यह कर सकते हैं:

$('body > *:not(#dondelete)').remove(); 

कहाँ अपने तत्व id="dondelete" है और शरीर का एक बच्चा है ।

1

$('body > *:not(#123)').remove() 

http://api.jquery.com/not-selector/

+0

इन्हें कौन उठाता है? यह केवल 'बॉडी' तत्व का चयन करेगा। – kapa

+0

@bazmegakapa ने –

+1

का परीक्षण और सही किया है अब यह पहले पोस्ट किए गए अन्य (पहले से ही सही) समाधानों जैसा ही है, इसलिए यह आपके लिए हटाना उचित होगा। हालांकि मैंने डाउनवोट हटा दिया। – kapa

3

प्रयास करें यह एक पुरानी सवाल है, लेकिन उसे स्वीकार जवाब गलत है। यह एक सामान्य समाधान के रूप में नहीं इस स्थिति में काम नहीं करता है (http://jsfiddle.net/LVb3V/ देखें) और निश्चित रूप से।

बेहतर उपयोग करने के लिए:

$('body *').not('#div2, #div2 *').remove()​;

यह DIV2 के अलावा शरीर के सभी तत्वों और सभी तत्वों को उसमें शामिल निकाल देंगे।

+1

धन्यवाद आप! यह स्वीकार्य समाधान होना चाहिए। यहां बड़ा अंतर jquery है "।नहीं "चयनकर्ता में नहीं उपयोग करने के बजाय। –

0

मुझे लगता है कि

$("body *").not("body #div2") 
      .not("body #div2 #elementtokeep") 
      .not("body #div2 #elementtokeep *") 
      .remove(); 

यह ध्यान केंद्रित करने के लिए सबसे आसान तरीका है।

http://jsfiddle.net/6vb2va6g/

0

इस कोड मेरे लिए काम किया।

$('body > * :not(#123)').remove() 

आपको * और: के बीच स्थान देना होगा। इससे पहले यह काम नहीं किया जब कोशिश

$('body > *:not(#123)').remove() साथ कोड का उपयोग करें। मुझे * और: चरित्र के बीच स्थान देना पड़ा।

हैप्पी कोडिंग।

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