我想通过单击列表项中的一列/字符串来过滤项目列表。当我点击销售时,只会显示销售类别列表中的项目。当我再次单击销售时,将显示列表中的所有项目。
它就像我在jsfiddle上想要的那样工作
但为什么它不能在 ASP .net 上的 Visual Studio 中工作?它抛出异常
...
var a = p.getElementsByTagName("a")[0];
...
这是我的 HTML 代码:
<div data-role="page" id="page1">
<div data-role="content">
<ul data-role="listview" data-inset="false" data-filter="true" id="testList">
<li data-icon="false">
<p class="ui-li-heading">
<strong> 1</strong>
</p>
<p class="ui-li-aside">
<span>
<a href="javascript:void(0)" class="areaItem" id="areaItem">Sales</a>
</span>
<span class="ui-icon ui-icon-gear" style="display: inline-block;"></span>
<span class="ui-icon ui-icon-check" style="display: inline-block;"></span>
</p>
</li>
</div>
</div>
这是我的 Javascript:
var filtered = 0;
$(".areaItem").click(function () {
var SearchTerm = $(this).text();
var ul = document.getElementById("testList");
var liArray = ul.getElementsByTagName("li");
for(var i=0; i<liArray.length; i++) {
var p = liArray[i].getElementsByTagName("p")[0];
var a = p.getElementsByTagName("a")[0];
if(filtered == 1) {
$(liArray[i]).show();
} else {
if(a.text.localeCompare(SearchTerm) != 0) {
$(liArray[i]).hide();
}
}
}
if (filtered == 0) {
filtered = 1;
} else {
filtered = 0;
}
});