我有一些代码,我根据 2 个选择下拉菜单中的选择显示/隐藏 DIV。这很好用。现在,当没有任何选择匹配时,我试图显示“无结果”消息。
它几乎可以工作了。问题是“无结果”消息在需要时显示,但在应该时不隐藏。任何帮助将不胜感激。
您似乎缺少清空 NoResults 类内容的条件。我将小提琴编辑为:
if ($('.item:visible').length === 0) {
$(".NoResults").html("<p>No events for your selection.</p>");
} else { // NEW ELSE CLAUSE
$(".NoResults").empty();
}
编辑:虽然这可行,但我建议使用下面的 RepWhoringPeeHaa 解决方案,使用 show()/hide() 而不是直接设置内容。
我对该解决方案的主要论点是它在 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(); // <==============
一种方法是每次切换可见性,
因为代码是从上到下运行的,所以总是从隐藏开始noresult
,当它应该显示时,就这样显示:
if ($('.item:visible').length === 0) {
$(".NoResults").html("<p>No events for your selection.</p>");
}
else{
$(".NoResults").html("");
}