jquery Javascript数组创建多个示例

4uqofj5v  于 2023-04-05  发布在  jQuery
关注(0)|答案(1)|浏览(110)

我正在为一个词汇表(一组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的数组。当我运行按钮处理程序时,我可以在控制台中看到它们。
我假设按钮处理程序正在存储原始数组,并且在调用第二次搜索时正在传递第二个示例。如何重置状态以运行第二次搜索?

gcxthw6b

gcxthw6b1#

我必须道歉,但概述我的问题产生了一个思想线索,使我的答案。
当第二次搜索开始时,按钮仍然在为第一次搜索做它的事情,所以在再次调用之前必须销毁该处理程序。

$('#results button').off();

相关问题