JQuery列表筛选器无法使用错误的字符
JQuery list filter wont work with wrong characters
我有一个html列表的过滤器,我从Keyup获得了这个过滤器,用jQuery过滤多个带有标题的列表。问题是,一旦你键入了一个不在列表中的错误单词/字符,它就会有点崩溃,并且在你将其从输入框中完全删除之前不会起作用。有没有什么方法可以修复原始代码,使其即使在您简单地退格并删除错误的字符后也能正常工作?
http://jsfiddle.net/thesystemrestart/zzG4f/5/
HTML:
<ul id="workflow_books">
<li>
<h6 class="custom"> Custom Books</h6>
<ul>
<li class="custom-books">
<a>Don't see your book in our list? Add it yourself!</a>
</li>
</ul>
</li>
<li>
<h6>Academic</h6>
<ul>
<li>
<a>Academic Book One</a>
</li>
<li>
<a>Academic Book Two</a>
</li>
</ul>
</li>
<li>
<h6>Botany</h6>
<ul>
<li>
<a>Botany Book One</a>
</li>
<li>
<a>Botany Book Two</a>
</li>
</ul>
</li>
</ul>
JQuery
var $products = $('#workflow_books li ul');
$("#search").keyup(function() {
var val = this.value.trim();
if (!val) $('li:hidden', '#workflow_books').show();
else {
$('li:hidden', $products).show();
$('li', $products).filter(function() {
var re = new RegExp(val, 'ig');
return !re.test($('a', this).text());
}).hide();
$products.each(function() {
if ($('li:visible', this).length == 0) $(this).parent('li').hide();
else $(this).parent('li').show();
});
}
});
如果有任何帮助,我将不胜感激。谢谢
问题是这行:
$('li:hidden', $products).show();
如果父母被隐藏,则不会向父母显示,因此此行:
if ($('li:visible', this).length == 0)
当父级被隐藏时永远不能为false。
我的主要变化是我在上面发布的第一行:
$('li:hidden', '#workflow_books').show();
工作小提琴:http://jsfiddle.net/hKv8h/
var $products = $('#workflow_books li ul:not(:first)');
$("#search").keyup(function() {
var val = this.value.trim();
$('li:hidden', '#workflow_books').show();
if (val) {
$('li:hidden', '#workflow_books').show();
$('li', $products).filter(function() {
var re = new RegExp(val, 'ig');
return !re.test($('a', this).text());
}).hide();
$products.each(function() {
if ($('li:visible', this).length == 0)
$(this).parent('li').hide();
else
$(this).parent('li').show();
});
}
});
相关文章:
- 处理JSON字符串会导致JavaScript错误
- 如何使用JavaScript粘贴原始二进制文件而不出现“无效字符”错误
- AJAX语法错误:JSON.parse:意外字符
- 使用JSON.parse时出现无效字符javascript错误
- 解析 JSON 时出现无效字符错误
- 在 Javascript 函数中对参数值使用特殊字符时出现 Javascript 错误
- JavaScript意外的令牌<,有什么方法可以逃避错误(或至少跳过那些无用的字符)
- 浏览器抛出错误:解析文件时出现意外字符 ' ' (1:0):图像.png
- 谷歌分析实验导致格式良好的字符数据或标记错误
- JavaScript运行时错误:无效字符
- Uglify JS错误:意外字符''连接时,请缩小select2
- JSON.parse:Javascript中出现意外的字符错误
- JSON无效字符错误
- 文本区:显示错误数量的字符,我可以写
- 为什么我得到“;非法字符语法错误未终止的字符串文字“;当我使用javascript时
- "错误CS1012:字符文字“”中的字符太多;
- 在 Javascript 中执行新的 Date.toString() 时出现错误字符
- 警报中带有重音的错误字符,并使用Phonegap/Cordova进行确认
- SSRS IE8 JavaScript错误字符ScriptResource.axd无效
- 由于字符串中的错误字符,脚本中断