2013-04-05 27 views
8

関数内でhtmlを削除して新しいコンテンツを追加しようとする前に、a(div、span、p)に.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

ああ、何らかの理由でユーザーがそのボタンを押すと機能が起動し、青色のボタンがまだ作成されていないので、コンソールに削除してスローしてエラーが表示されることはありません。 hmm今見て –

答えて

12

htmlが方法ではない財産である、あなた()を使用する必要がある場合は、length Stringオブジェクトのプロパティを使用して、返されるHTML文字列の長さを確認することができます。

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

要素のHTMLコンテンツを変更したい場合は、要素の現在のHTMLコンテンツを削除する必要はありません。 htmlメソッドは、現在のhtmlコンテンツをオーバーライドします。

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

プレーンバニラJavaScriptがあまりにもトリックを行う必要があります。

if(document.querySelectorAll('.'+rowName+' div')[0].childElementCount > 0){ 
    console.log("found"); 
} 
関連する問題