2013-04-05 18 views
8

Bir işlevde, html'yi kaldırmaya ve yeni içerik eklemeye çalışmadan önce bir (div, span, p) öğesinde .html öğeleri olup olmadığını kontrol etmem gerekiyor.Kaldırmadan önce öğenin içinde HTML olup olmadığını nasıl kontrol edebilirim? jQuery

Bunun nasıl emin değil ...

Bunu denedim, ama çalışmıyor:

// 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(); 
    } 

Tam fonksiyon

// 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

Öğeyi kaldırmaya devam ederseniz öğenin HTML'si var mıdır? Neden sadece içeriği ['.html'] (http://api.jquery.com/html) ile tamamen değiştirmiyoruz? –

+0

Oh, bazı şeyler kullanıcı bu düğmeye basacak, işlevi başlatmak ve mavi düğme henüz oluşturulmadı ... bu yüzden konsol kaldırmak ve atmak için herhangi bir .html yok :(belki yerine Yapabileceğim net bir çağrı var mı? Hmm şimdi bakıyor –

cevap

12

html bir yöntem değildir bir özellik, sen () kullanmanız gerekir, sonra döndürülen html dizesinin uzunluğunu kontrol etmek için String nesnesinin length özelliğini kullanabilirsiniz:

Bir öğenin HTML içeriğini değiştirmek isterseniz, geçerli html içeriğini kaldırmaya gerek olmadığını unutmayın. html yöntemi, geçerli html içeriğini geçersiz kılar.

5

Çocukların uzunluğunu kontrol edin.

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

'.children()' metin düğümlerini döndürmez. – jmar777

+1

@ jmar777 ... Bu konuya oldukça eminim. –

1

Sen (boşluk için ve muhasebe) Bunun için .html() kullanabilirsiniz

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

deneyin:

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

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

Düz Vanilya JavaScript da hile yapmak gerekir.

if(document.querySelectorAll('.'+rowName+' div')[0].childElementCount > 0){ 
    console.log("found"); 
} 
İlgili konular