2つの選択ドロップダウンで行われた選択に基づいてDIVを表示/非表示にするコードがいくつかあります。これはうまく機能しています。現在、選択肢に一致するものがない場合に「結果なし」メッセージを表示しようとしています。
ほぼ機能しています。問題は、「結果なし」メッセージが必要なときに表示されますが、必要なときに非表示にならないことです。どんな援助でも大歓迎です。
NoResultsクラスの内容を空にする条件が欠落しているようです。私はフィドルを次のように編集しました:
if ($('.item:visible').length === 0) {
$(".NoResults").html("<p>No events for your selection.</p>");
} else { // NEW ELSE CLAUSE
$(".NoResults").empty();
}
編集:これは機能しますが、コンテンツを直接設定するのではなく、show()/ hidden()を使用して以下のRepWhoringPeeHaaのソリューションを使用することをお勧めします。
その解決策についての私の主な議論は、htmlテンプレートに、そしてコードから、より多くのコンテンツ(「あなたの選択のためのイベントはありません。」)を保持することです。コンテンツ/コードをうまく分離すればするほど、将来的にコンテンツを更新しやすくなります。
内容を何にも設定することはできません:
if ($('.item:visible').length === 0) {
$(".NoResults").html("<p>No events for your selection.</p>");
} else {
$(".NoResults").html('');
}
または、デフォルトで要素にテキストを追加し、NoResults
デフォルトでCSSを使用して非表示にします(display: none
)。次に、表示/非表示に切り替えます。
if ($('.item:visible').length === 0) {
$(".NoResults").show();
} else {
$(".NoResults").hide();
}
結果がないことを確認した後、elseステートメントを追加します。
if ($('.item:visible').length === 0) {
$(".NoResults").html("<p>No events for your selection.</p>");
}
else $(".NoResults").html("");
更新されたjsFiddleは次のとおりです:http://jsfiddle.net/hDWAh/8/
if ($('.item:visible').length === 0)
$(".NoResults").html("<p>No events for your selection.</p>");
else // <==============
$(".NoResults").empty(); // <==============
1つの方法は、毎回表示を切り替えることです。
コードは上から下に実行されるため、常に非表示から始め、表示noresult
する必要がある場合は、次のように表示します。
if ($('.item:visible').length === 0) {
$(".NoResults").html("<p>No events for your selection.</p>");
}
else{
$(".NoResults").html("");
}