我正在为一个词汇表(一组div
,类为searchable
)创建一个搜索函数。
const foundset = [];
然后通过此函数执行搜索,该函数识别包含搜索字符串的条目
$(".searchable").each(function(){
if($(this).html().toUpperCase().indexOf(searchValue) > -1) {
// Only unique ids
if ( ! foundset.includes($(this).parent('.entry').attr('id')) ) {
foundset.push($(this).parent('.entry').attr('id'));
}
}
});
它给了我一个div数组,其中包含我的搜索字符串。
然后使用一个按钮(处理程序在原始搜索的处理程序中,因此我可以访问父处理程序中设置的数组foundset
),我可以遍历div,滚动到每个div。
$('#results button').on('click', function () {
if (foundset.length > 0) {
foundset.shift();
console.log (foundset);
$('html, body').animate({
scrollTop: $("#" + foundset[0]).offset().top - 200
}, 1000);
} else {
$('#results').hide();
$('#results .search-term').text('');
$('#results .count').text('');
}
});
我发现,当我进行第二次搜索时,原始数组仍然存在,即我似乎有2个名称为foundset
的数组。当我运行按钮处理程序时,我可以在控制台中看到它们。
我假设按钮处理程序正在存储原始数组,并且在调用第二次搜索时正在传递第二个示例。如何重置状态以运行第二次搜索?
1条答案
按热度按时间gcxthw6b1#
我必须道歉,但概述我的问题产生了一个思想线索,使我的答案。
当第二次搜索开始时,按钮仍然在为第一次搜索做它的事情,所以在再次调用之前必须销毁该处理程序。