2011-07-15 17 views
11

के साथ तत्व मौजूद है या नहीं, मुझे पता है कि आप $('div').length के साथ कोई तत्व मौजूद है या नहीं, लेकिन जब .remove(), .length का उपयोग करके कोई तत्व नष्ट हो जाता है, तो अभी भी div मौजूद है। मैं कैसे पा सकता हूं कि यह वास्तव में मौजूद है या नहीं?JQuery: जांचें कि '.remove()'

if ($('div').length) { 
    alert('yes') 
} else { 
    alert('no') 
} 
+0

एर .. बिल्कुल सही नहीं है कि आपका क्या मतलब है। यदि आप '.remove()' का उपयोग करते हैं, तो तत्व को DOM से हटा दिया जाता है। लंबाई अपेक्षित परिणाम की रिपोर्ट करता है: http://jsfiddle.net/TmPBC/ –

+0

यह पृष्ठ पर एक div के रूप में लंबे समय तक चेतावनी देगा। यदि कोई सटीक तत्व हटा दिया गया है तो आप परीक्षण करने के लिए एक आईडी का उपयोग कर सकते हैं। – Paulpro

+0

$ ('div') एक उदाहरण था। मैं यह देखने के लिए परीक्षण नहीं कर रहा था कि पूरे पृष्ठ में कोई divs था या नहीं। – gavsiu

उत्तर

6

परीक्षण करें कि क्या यह एक माता पिता हैं:

if ($element.parent().length) { alert('yes') } 
else { alert('no') } 

या यदि आप DOM एलीमेंट का एक संदर्भ है:

if(element.parentNode) { 
    // yes 
} 

जाहिर है, तत्वों के लिए यह केवल काम करता है आप पहले से ही एक है करने के लिए संदर्भ।

एफडब्ल्यूआईडब्ल्यू, तत्व स्वयं अभी भी मौजूद है, यह सिर्फ डीओएम पेड़ का हिस्सा नहीं है।

+0

यह काम नहीं करेगा यदि डीओएम से '$ element' का कोई मूल तत्व हटा दिया गया है। उदाहरण के लिए, '$ element.parent()। हटाएं()'। '$ element.parent()। लंबाई' अभी भी 1 है, भले ही' $ element' डोम पेड़ में नहीं है। – gilly3

+0

@ gilly3: ठीक है, मुझे लगता है कि प्रश्न में वर्णित '.remove() 'तत्व पर किया गया था। वैसे भी, आपके समाधान का +1, लेकिन मुझे लगता है कि 'html' के बजाय' body' को देखने के लिए पर्याप्त है। –

6

अस्तित्व में, आप का मतलब है कि आप देखना चाहते हैं कि यह डोम में मौजूद है या नहीं?

var $myDiv = $(".myDiv"); 
$myDiv.closest("html").length; // returns 1 
$myDiv.remove(); 
$myDiv.closest("html").length; // returns 0 

या .is("html *") का उपयोग करें: यदि "html" एक पूर्वज है देखने के लिए जाँच करें। यह एक बूलियन है, जो उपयोगी है रिटर्न:

var $myDiv = $(".myDiv"); 
$myDiv.is("html *"); // returns true 
$myDiv.remove(); 
$myDiv.is("html *"); // returns false 
+0

प्रदर्शन के मामले में कौन सा सबसे कुशल है? हम्म। – jfroom

+0

यदि कोई अंतर है, तो 'closest() 'सबसे अधिक कुशल होगा। '.is()' को लागू करने के तरीके के आधार पर, यह 'closest() 'के रूप में लगभग उतना ही कुशल हो सकता है, या यह बहुत खराब हो सकता है। – gilly3

0

आप तत्व और बाद तत्व हटा दिया गया है अगर आप इस तरह की जांच कर सकते हटाने से पहले तत्वों के जनक प्राप्त कर सकते हैं!

निश्चित रूप से
var parent = $(element).parent(); 
    $(element).remove(); 

    if(parent.children(element)) { alert('yes'); } 
    else { alert('no'); } 

तत्व कुछ jQuery चयनकर्ता

4
if (!$foo.closest('html').length) { 
    //Element is detached 
} 

यह अभी भी काम करेगा अगर तत्व के माता-पिता में से एक को हटा दिया गया होगा (इस स्थिति में तत्व में ही अभी भी एक माता पिता होगा)।

मैं this answer उद्धृत करता हूं।

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