如何在jquery中使两个过滤器同时工作



我应该让我的两个过滤系统,一个用于按钮,一个用于文本输入,一起工作。有人知道怎么做吗?

$(function() {
$('input[name="test"]').on('change', function(a, b) {
value1 = this.value;
console.log(value1)
$('#elenco .cliente').hide();
if (value1 == 'All') {
$('#elenco .cliente').show();
dom = $('#elenco .cliente')
}
if (value1 == 'PROD') {
$('#elenco .cliente[value="PROD"]').show();
dom = $('#elenco .cliente[value="PROD"]')
}
if (value1 == 'TEST') {
$('#elenco .cliente[value="TEST"]').show();
dom = $('#elenco .cliente[value="TEST"]')

}
});
});
$(document).ready(function(){
$("#sito").on("keyup", function() {
var value = $(this).val().toLowerCase();
//console.log(this)
$("#elenco .cliente .desc").filter(function() {
$(this).parent().toggle($(this).text().toLowerCase().indexOf(value) > -1)
});
});
});

尝试在脚本的顶部声明dom变量。使用它来存储对第一个过滤函数显示的元素的引用。然后,第二个过滤函数使用dom变量仅对元素应用文本过滤器。像这样的代码应该可以工作

$(function() {
var dom = $('#elenco .cliente');  // Declare a variable to store the elements being displayed
$('input[name="test"]').on('change', function(a, b) {
value1 = this.value;
console.log(value1)
$('#elenco .cliente').hide();
if (value1 == 'All') {
$('#elenco .cliente').show();
dom = $('#elenco .cliente'); // Store the elements being displayed
}
if (value1 == 'PROD') {
$('#elenco .cliente[value="PROD"]').show();
dom = $('#elenco .cliente[value="PROD"]'); // Store the elements being displayed
}
if (value1 == 'TEST') {
$('#elenco .cliente[value="TEST"]').show();
dom = $('#elenco .cliente[value="TEST"]'); // Store the elements being displayed
}
});
$(document).ready(function() {
$("#sito").on("keyup", function() {
var value = $(this).val().toLowerCase();
// Apply the text filter only to the elements being displayed
dom.find('.desc').filter(function() {
$(this).parent().toggle($(this).text().toLowerCase().indexOf(value) > -1);
});
});
});
});

最新更新