我有一个搜索文本框用于搜索li内容。搜索结果仅基于连字符后的li内容。
这是li内容: 导演 - MacLeod Conner
我希望根据 MacLeod Conner 显示li搜索字词。不是导演。 怎么做?帮助任何人。
HTML:
<li><input type='checkbox' name='' class='' value="1"><div>Director-MacLeod Conner</div></li>
<li><input type='checkbox' name='' class='' value="2"><div>Director-Dolores Arnold</div></li>
<li><input type='checkbox' name='' class='' value="3"><div>Music Directer-Blake Francis</div></li>
<li><input type='checkbox' name='' class='' value="4"><div>Autitor-Chavarin Deanna</div></li>
<li><input type='checkbox' name='' class='' value="5"><div>Director-Robert</div></li>
JS:
$(document).ready(function () {
$('ul#toList > li').hide();
$(document).on('click', '#btn1', function(e) {
var Textnew=$("#textNew").val();
if(Textnew.length>=3){
var matches = $('ul#toList').find( 'li:contains('+ $( "#textNew" ).val() +')');
$( 'li', 'ul#toList' ).not( matches ).slideUp();
matches.slideDown();
}
else{
$('ul#toList > li').hide();
}
});
});
答案 0 :(得分:0)
没有选择器可以完成此任务。因此,find
代替filter
,可以将$(document).ready(function () {
$(document).on('click', '#btn1', function(e) {
var Textnew=$("#textNew").val();
if(Textnew.length>=3){
$('ul#toList li')
.show()
.filter(function(index){
var parts = $(this).find('div').text().split('-');
return (parts[1].indexOf(Textnew) == -1);
})
.slideUp();
} else{
$('ul#toList > li').show();
}
});
});
与函数一起使用并直接隐藏元素:
li
这将遍历每个Traceback (most recent call last):
File "pollingstations.py", line 12, in <module>
src = json.load(open('pollstations.geojson'))
File "C:\Python27\ArcGIS10.3\lib\json\__init__.py", line 290, in load
**kw)
File "C:\Python27\ArcGIS10.3\lib\json\__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "C:\Python27\ArcGIS10.3\lib\json\decoder.py", line 365, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Python27\ArcGIS10.3\lib\json\decoder.py", line 381, in raw_decode
obj, end = self.scan_once(s, idx)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xcd in position 2: invalid continuation byte
并按连字符拆分文本。然后它只将连字符后面的字符串部分与搜索文本进行比较。