2012-01-15 4 views
0

私はPHP通知システムを持っています。通知量はjQueryを使用してDIVに入れられます。唯一の問題は、0の通知がある場合、空のDIVがまだ表示されることです。この私が現在使用しているjQueryのです:空の場合のみDIVを削除します

$(document).ready(function() { 
    $.get('/codes/php/nf.php', function(a) { 
     $('#nfbadge').html(a); 
     $('#nfbadge:empty').remove(); 
    }) 
}); 
setInterval(function() { 
    $.get('http://localhost/codes/php/nf.php', function(a) { 
     $('#nfbadge').html(a); 
     $('#nfbadge:empty').remove(); 
    }) 
}, 8000); 

を唯一の問題は、文書の負荷で0通知や通知が追加されますがある場合要素は、それを削除された場合、バッジはとても基本的には、表示されませんということですページが再ロードされない限り戻ってこないが、ページを再ロードする必要がないように通知システムを作った。これをどうすれば解決できますか?

答えて

0

PHPを管理している場合は、DIVを削除するためにjQueryを使用しないでください。ほんのわずかであっても、リソースと読み込み時間の無駄ですコード行。 PHPのテンプレートで

はあなたが条件文で #nfbadge div要素を含める必要があり、何かのように:

var $nfbadge = $('#nfbadge'); 
if($nfbadge) {$nfbadge.html(a)} 
+0

良いアイデア、ありがとう。 – user1150837

1

.remove()DOMのうち素子ならびにコンテンツを取ります。これはリロードしない限り戻ってこない理由です。代わりに.fadeOut()または.hide()を使用する

+0

.hide()を使用しようとしましたが、なんらかの理由でうまく動作しません。 – user1150837

+0

onloadが空で、.hide()を呼び出すと、非表示になります。コンテンツがロードされたら必ず.show()を使用してください。 – shaunsantacruz

1

あなた:あなたは、次のような何かを行うことができ、あなたのjQueryのコードを次に

if($notifications) { 
    echo '<div id="nfbadge">'; 
    //notification stuff 
    echo '</div>'; 
} 

おそらくこのような何かを行うべきでしょう:

var elm = $('#nfbadge'), 
     T = setInterval(getCodes, 8000); 

function getCodes() { 
    $.get('/codes/php/nf.php', function(a) { 
     elm.html(a); 
     if (elm.is(':empty') && elm.is(':visible')) { 
      elm.hide(); 
     }else{ 
      elm.show(); 
     } 
    }); 
} 

あなたのところでもう少し作業が必要ですが、正しい軌道に乗る必要があります!

関連する問題