2013-04-05 5 views
8

किसी फ़ंक्शन में मुझे यह जांचने की आवश्यकता है कि क्या (div, span, p) में html को हटाने और नई सामग्री में जोड़ने से पहले किसी भी .html तत्व शामिल हैं या नहीं।यह जांचने के लिए कि तत्व में HTML को हटाने से पहले क्या है? jQuery में

ऐसा करने के तरीके में सुनिश्चित नहीं हैं ...

मैं इस कोशिश की, लेकिन काम नहीं कर रहा:

// HERE below I tried to do a check to see if the div's have HTML, but did not work 
    if ($('.'+rowName+' div').html) { 
     $('.'+rowName+' div').html.remove(); 
     $('.'+rowName+' span').html.remove(); 
     $('.'+rowName+' p').html.remove(); 
    } 

पूर्ण समारोह

// Create the Role/Fan rows 
function rowMaker (rowName, roleName) { 
    //alert(rowName+' '+roleName); 

    // HERE below I tried to do a check to see if the div's have HTML, but did not work 
    if ($('.'+rowName+' div').html) { 
     $('.'+rowName+' div').html.remove(); 
     $('.'+rowName+' span').html.remove(); 
     $('.'+rowName+' p').html.remove(); 
    } 

    // Blue button 
    $('.'+rowName+' div').append(roleName); 
    $('.'+rowName+' div').attr('id', 'blue-fan-'+roleName); 
    var blueButton = ('blue-fan-'+roleName); 
    console.log('blueButton = '+blueButton); 

    // Genres 
    $('.'+rowName+' span').append(roleType); 

    // Tags 
    $.each(role_Actor, function(index, item) { 
     $('.'+rowName+' p').append(item+', '); 
    }); 

    $('#'+blueButton).click(function() { 

     console.log('clicked blue button'); 

     // clears the role_Actor to be used to recapture checkboxes 
     role_Actor = []; 

     console.log('role_Actor = '+role_Actor); 

     //$('#modal-'+roleId).modal(); 
     $('#modal-'+roleId).modal({persist:true}); 
     return false; 
    }); 

} 
+0

क्या वास्तव में कोई फर्क पड़ता है यदि तत्व में HTML है यदि आप इसे हटाने जा रहे हैं? क्यों न केवल सामग्री को ''.html'] (http://api.jquery.com/html) से प्रतिस्थापित करें? –

+0

ओह, क्योंकि उपयोगकर्ता उस बटन को दबाएगा, फ़ंक्शन लॉन्च करेगा और नीला बटन अभी तक नहीं बनाया गया है ... इसलिए कंसोल पर निकालने और फेंकने और त्रुटि करने के लिए कोई भी .html नहीं है :(शायद निकालने के बजाय क्या कोई स्पष्ट कॉल है जो मैं कर सकता हूं? हम्म अब देख रहे हैं –

उत्तर

12

html एक विधि नहीं एक संपत्ति है, तो आप () का उपयोग करने की आवश्यकता है, तो आप लौटाए गए HTML स्ट्रिंग की लंबाई की जांच के लिए स्ट्रिंग ऑब्जेक्ट की length प्रॉपर्टी का उपयोग कर सकते हैं:

if ($.trim($('.'+rowName+' div').html()).length) { 
    // $('.'+rowName).find('div, p, span').remove(); 
    $('.'+rowName).find('div, p, span').empty(); 
} 

ध्यान दें कि यदि आप किसी तत्व की HTML सामग्री को बदलना चाहते हैं, तो इसकी वर्तमान HTML सामग्री को हटाने की कोई आवश्यकता नहीं है। html विधि वर्तमान एचटीएमएल सामग्री overrides।

5

बच्चों की लंबाई की जांच करें।

if($('.'+rowName+' div').children().length > 0) 
+1

'.children() 'टेक्स्ट नोड्स वापस नहीं करेगा। – jmar777

+1

@ jmar777 ... मुझे यकीन है कि यह बात है। –

1

आप इस के लिए .html() उपयोग कर सकते हैं (और लेखांकन खाली स्थान के लिए) की कोशिश करो

if ($('.'+rowName+' div').html().length > 0) { 
     $('.'+rowName+' div').empty(); 
     $('.'+rowName+' span').empty(); 
     $('.'+rowName+' p').empty(); 
} 
2

:

var $row = $('.rowName'); 

if (!$row.find('div').html().trim().length) { 
    $row.find('div, span, p').empty(); 
} 
0

सादे वेनिला जावास्क्रिप्ट चाल भी करना चाहिए।

if(document.querySelectorAll('.'+rowName+' div')[0].childElementCount > 0){ 
    console.log("found"); 
} 
संबंधित मुद्दे