我有一个列表,在您输入输入时会对其进行过滤。以下是javascript责任:
$("#filter").keyup(function () {
var filter = $(this).val(), count = 0;
$(".filtered:first li").each(function () {
if ($(this).text().search(new RegExp(filter, "i")) < 0) {
$(this).addClass("hidden");
} else {
$(this).removeClass("hidden");
count++;
}
});
$('.li-group').each(function(){
if($(this).children(':visible').length == 0) {
$(this).prev().addClass('hidden');
}
else {
$(this).prev().removeClass('hidden');
}
});
});
我想要一个关闭'按钮',当你点击它时,它会清空所有文本的输入。我已经用下面的代码完成了这个。但是,由于上面的代码触发了keyup事件,因此不会重新初始化,因此不会显示隐藏的结果。感谢
$('#filter-close').click(function(){
$('input#filter').val('');
});
答案 0 :(得分:3)
您应该手动调用其keyup
处理程序。首先设置空值,然后调用将根据新值执行的处理程序:
$('#filter-close').click(function(){
$('input#filter').val('').keyup();
});
这是trigger keyup
事件的快捷语法:
$('#filter-close').click(function(){
$('input#filter').val('').trigger('keyup');
});
如果输入框中有其他keyup
事件处理程序您不想运行(简单触发将运行所有这些事件处理程序),您可以为事件指定namespace(使用{对于早于1.7的jQuery,{1}}代替bind()
。
on()
然后你可以像这样触发它:
$("#filter").on('keyup.doSearch', function () {
var filter = $(this).val(), count = 0;
/* the rest of your keyup handler code */
});
答案 1 :(得分:0)
非常简单的解决方案是:
$('#filter-close').click(function(){
$('input#filter').val('');
$("#filter").keyup();
});