यदि एक div खाली है तो जाँच करने के लिए एक if स्टेटमेंट का उपयोग करना


114

अगर एक अलग div खाली है तो मैं एक विशिष्ट div को हटाने की कोशिश कर रहा हूं। यहाँ मैं उपयोग कर रहा हूँ:

$(document).ready(function () {
    if ('#leftmenu:empty') {
        $('#menuTitleWrapper').remove();
        $('#middlemenu').css({ 'right': '0', 'position': 'absolute' });
        $('#PageContent').css({ 'top': '30px', 'position': 'relative' });
    }
});

मुझे लगता है कि यह करीब है, लेकिन मैं यह पता नहीं लगा सकता कि कैसे #leftmenu के परीक्षण के लिए कोड लिखना खाली है। किसी भी मदद की सराहना की है!

जवाबों:


271

आप उपयोग कर सकते हैं .is()

if( $('#leftmenu').is(':empty') ) {
    // ...

या आप lengthसंपत्ति का परीक्षण सिर्फ यह देखने के लिए कर सकते हैं कि क्या पाया गया।

if( $('#leftmenu:empty').length ) {
    // ...

ध्यान रखें कि खाली का मतलब सफेद जगह नहीं है। यदि एक मौका है कि सफेद स्थान होगा, तो आप $.trim()सामग्री की लंबाई के लिए उपयोग और जांच कर सकते हैं ।

if( !$.trim( $('#leftmenu').html() ).length ) {
    // ...

3
trim()मेरे लिए एकदम सही काम करता है। Sharepoint में एक कॉलम निकालना था जो कुछ सफेद स्थान जोड़ रहा था, जिसमें trim()पाता है। धन्यवाद।
motoxer4533

1
नीचे, ध्यान दें कि आप .text () का उपयोग कर सकते हैं यदि आप यादृच्छिक अदृश्य HTML को सामग्री के रूप में गिनना नहीं चाहते हैं।
रोजुएलएडर

@rogueleaderr स्मार्ट, का उपयोग कर के बारे में सोचा नहीं था .text()क्योंकि आप वास्तव में "खाली" कंटेनर में कुछ टिप्पणी कर सकता है और इस प्रकार न तो trimहै और न ही :emptyकाम करेगा। Thx
जूरी

क्या यह उपयोग करने के लिए एक कुशल समाधान होगा .html()यदि कंटेनर में बहुत लंबा HTML सामग्री है?
techie_28

37

यह निर्भर करता है कि आप खाली होने का क्या मतलब है।

यह जांचने के लिए कि क्या कोई पाठ नहीं है (यह उन बाल तत्वों को अनुमति देता है जो स्वयं खाली हैं):

if ($('#leftmenu').text() == '')

यह देखने के लिए कि क्या कोई बाल तत्व या पाठ नहीं हैं:

if ($('#leftmenu').contents().length == 0)

या,

if ($('#leftmenu').html() == '')

22

यदि आप एक त्वरित डेमो चाहते हैं कि आप खाली divs की जाँच कैसे करें, तो मैं आपको इस लिंक को आज़माना चाहूँगा:

http://html-tuts.com/check-if-html-element-is-empty-or-has-children-tags/


नीचे आपके पास कुछ छोटे उदाहरण हैं:

CSS का उपयोग करना

यदि आपका div बिना किसी श्वेत स्थान के भी खाली है, तो आप CSS का उपयोग कर सकते हैं:

.someDiv:empty {
    display: none;
}

दुर्भाग्य से कोई सीएसएस चयनकर्ता नहीं है जो पिछले सिबलिंग तत्व का चयन करता है। केवल अगले भाई तत्व के लिए है:x ~ y

.someDiv:empty ~ .anotherDiv {
    display: none;
}

JQuery का उपयोग करना

पाठ () फ़ंक्शन के साथ तत्व की पाठ लंबाई की जाँच करना

if ( $('#leftmenu').text().length == 0 ) {
    // length of text is 0
}

जांच करें कि क्या तत्व में कोई बच्चे टैग हैं या नहीं

if ( $('#leftmenu').children().length == 0 ) {
    // div has no other tags inside it
}

खाली तत्वों की जांच करें यदि उनके पास सफेद-स्थान है

if ( $.trim( $('.someDiv').text() ).length == 0 ) {
    // white-space trimmed, div is empty
}

12

आप इस तरह jQuery कार्यक्षमता का विस्तार कर सकते हैं :

विस्तार:

(function($){
    jQuery.fn.checkEmpty = function() {
       return !$.trim(this.html()).length;
    };
}(jQuery));

उपयोग :

<div id="selector"></div>

if($("#selector").checkEmpty()){
     console.log("Empty");
}else{
     console.log("Not Empty");
}

3

इसे इस्तेमाल करे:

$(document).ready(function() {
    if ($('#leftmenu').html() === "") {
        $('#menuTitleWrapper').remove();
        $('#middlemenu').css({'right' : '0', 'position' : 'absolute'});
        $('#PageContent').css({'top' : '30px', 'position' : 'relative'});
    }
});

यह सबसे सुंदर नहीं है, लेकिन यह काम करना चाहिए। यह जांचता है कि क्या आंतरिक HTML (#leftmenu की सामग्री) एक रिक्त स्ट्रिंग है (अर्थात इसके अंदर कुछ भी नहीं है)।


2

मेरे मामले में मेरे पास दस्तावेज़ पर छिपाने के लिए कई तत्व थे। यह वह फ़ंक्शन (फ़िल्टर) है जो अब तक मेरे लिए काम करता था:

$('[name="_invisibleIfEmpty"]').filter(function () {
    return $.trim($(this).html()).length == 0;
}).hide();

या .remove () के बजाय .hide (), जो भी आप पसंद करते हैं।

FYI करें: यह, विशेष रूप से, मैं SharePoint में (इस स्थिति के अलावा) "$ (यह) .children (" मेनू ") लंबाई में कष्टप्रद खाली तालिका कोशिकाओं को छिपाने के लिए उपयोग कर रहा हूं।"



1

मैंने आज इसका सामना किया है और स्वीकृत जवाब मेरे काम नहीं आए। यहाँ देखें कि मैंने यह कैसे किया।

if( $('#div-id *').length === 0 ) {
    // your code here...
}

मेरा समाधान जाँचता है कि अगर div के अंदर कोई तत्व हैं तो यह अभी भी div को खाली चिह्नित करेगा यदि इसके अंदर केवल पाठ है।


1

यह भी आप इसका उपयोग कर सकते हैं:


    if (! $('#leftmenu').children().length > 0 ) {
         // do something : e.x : remove a specific div
    }

मुझे लगता है कि यह आपके लिए काम करेगा!


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.