【发布时间】:2016-05-24 21:20:22
【问题描述】:
我有一个下拉菜单,由 ul/li/a 标签 (Bootstrap) 组成,在 Knockout 中动态绑定。我正在向它添加一个功能,以根据您输入的内容进行过滤,如果它的选择与过滤器字符串不匹配,则通过设置 li 的可见性。这很好用,但如果它们都不匹配,我想显示某种“无结果”div/消息。我还没有找到一个好方法来检查是否所有内容都不可见。
相关JS:
self.filteredOptions = function (e) {
return $(e).find("a").text().toLowerCase().startsWith(self.filterString());
}
相关 HTML:
<ul data-bind="foreach: ddlOptions">
<li data-bind="visible: $parent.filteredOptions($element)">
<a href="#" data-bind='event:{ click: function(){ $parent.Selection(Option)}}, attr:{"data-value": ID}, text: Option'></a>
</li>
</ul>
<div> **If dropdown empty make this appear** </div>
ddlOptions 是一个对象数组,例如 [{ID : "123", Option: "option1"}, ..]
因此,理想情况下,在消息 div 上执行visible: ddlOptions().length == 0 之类的操作会很好,但我只是隐藏了那些数据实际上并没有改变的 li 标签。有没有一种优雅的方法来检查是否仍然可见?
【问题讨论】:
标签: jquery knockout.js