【发布时间】:2016-09-20 02:03:53
【问题描述】:
我正在开发一个职位列表页面,该页面根据各种过滤器的组合显示结果。我希望在一组过滤器没有结果时出现“无匹配”消息,我想我会根据工作列表的可见性通过click 函数显示/隐藏p 元素元素。每个工作列表都包含在li.requisition-item 中;我尝试以两种不同的方式测试基于其他 SO 线程的可见性。这是我迄今为止所拥有的:
$(".requisition-filter a").on("click", function() {
if ($('.requisition-item').is(":visible").length == 0 || $('.requisition-item').css('display') == 'none' ) {
$('p.no-results').show();
console.log('show alert');
}
else if ( $('.requisition-item').is(":visible").length || $('.requisition-item').css('display') == 'block' ) {
$('p.no-results').hide();
console.log('hide alert');
}
else {
$('p.no-results').hide();
}
});
因此,我有一个带有 no-results 类的段落元素,它应该根据这些条件显示/隐藏,但是脚本的行为不符合预期。警报将(有时)正确显示,但当过滤器再次显示列表时不会正确“重新隐藏”。有什么想法吗?
【问题讨论】:
-
有点跑题了,但是你的网站很漂亮。我喜欢这个设计
-
.is(":visible")返回一个布尔值,true 或 false,没有长度 -
@adeneo 是正确的,也许你应该用 .filter 替换 .is 然后使用 .length
-
如果你不需要日志,你可以做
$('p.no-results').toggle( $('.requisition-item').is(":visible") ) -
感谢您的回复--@adeneo,我可以用您描述的
toggle方法替换整个if语句吗?
标签: javascript jquery css