Javascript 如何筛选数据使用按钮上的选择选项单击jQuery

Javascript 如何筛选数据使用按钮上的选择选项单击jQuery,javascript,jquery,Javascript,Jquery,我正在过滤表上的数据 我在视图中有4个选择选项,其中有一些数据。我想根据所有就绪的选项筛选表中的数据 问题是,如果我只更改一个选项,并按下“添加过滤器”按钮,它将正常工作,如果我将使用2-3个选项,过滤器将不工作 HTML: 我创建JSIDLE:每次调用filterData时,基本上都在隐藏所有内容。 建议您在应用过滤器时将该过滤器添加到应用过滤器的数组中,并最终使用过滤器的数组应用过滤器 稍后,您可以删除引用的过滤器,从数组中删除项目,并调用过滤器函数。(取决于您的实施……) 在主作用域启动一

我正在过滤表上的数据

我在视图中有4个选择选项,其中有一些数据。我想根据所有就绪的选项筛选表中的数据

问题是,如果我只更改一个选项,并按下“添加过滤器”按钮,它将正常工作,如果我将使用2-3个选项,过滤器将不工作

HTML:


我创建JSIDLE:

每次调用filterData时,基本上都在隐藏所有内容。 建议您在应用过滤器时将该过滤器添加到应用过滤器的数组中,并最终使用过滤器的数组应用过滤器

稍后,您可以删除引用的过滤器,从数组中删除项目,并调用过滤器函数。(取决于您的实施……)

在主作用域启动一个空数组,如下所示

let filters = []
使用此功能应用过滤器:

function applyFilter(value) {
if(value)
 filters.push(':contains('+value+')')
}
function filterData() {
if (filters.length>0) {
    var rows = $("#shelulerData").find("tr").hide();
    var currentFilter = null;
    filters.forEach(filter => {
        if(currentFilter===null) {
        currentFilter = rows.filter(filter)
      } else
      {
      currentFilter = currentFilter.filter(filter)
      }
    })   
    currentFilter.show()
  }
}
然后使用filterData函数:

function applyFilter(value) {
if(value)
 filters.push(':contains('+value+')')
}
function filterData() {
if (filters.length>0) {
    var rows = $("#shelulerData").find("tr").hide();
    var currentFilter = null;
    filters.forEach(filter => {
        if(currentFilter===null) {
        currentFilter = rows.filter(filter)
      } else
      {
      currentFilter = currentFilter.filter(filter)
      }
    })   
    currentFilter.show()
  }
}
基本上,您可以链接过滤器函数以获得最终过滤器,这就是为什么我将
currentFilter
var链接到循环中,并最终应用
show()
函数的原因


我尝试了你的解决方案,选择了11和week,如果我选择了一个选项,它会在多个选项中起作用,这是在坏方法的情况下过滤no@Andrew你可以检查最终的解决方案是否符合你的目标,但是,如果我更改选项并点击按钮,它将停止工作如果您想重置过滤器,您可以点击按钮do
filters=[]