Javascript jQuery搜索表中的元素
我是jQuery新手,需要帮助在表中搜索用户类型的元素。我是用JS编写的,但在使用jQuery编写时遇到了一个问题 找到元素后,表中具有相同类名的其他行应可见,而其他行应隐藏:Javascript jQuery搜索表中的元素,javascript,jquery,Javascript,Jquery,我是jQuery新手,需要帮助在表中搜索用户类型的元素。我是用JS编写的,但在使用jQuery编写时遇到了一个问题 找到元素后,表中具有相同类名的其他行应可见,而其他行应隐藏: $(document).ready(function() { search(".site-table", "#recordInput"); console.log("Document is ready"); } ); function search(search_table, searc
$(document).ready(function()
{
search(".site-table", "#recordInput");
console.log("Document is ready");
}
);
function search(search_table, search_field)
{
// Searching for an item specified in search_field within a table
$(search_field).on("keyup", function()
{
var target_text = $(this).val().toLowerCase();
//Hide everything first
$(search_table).find('tr').addClass(".hidden");
$(search_table).find('tr').each(function(index, element){
// For each row, find out if the row has the target_text in it
$element:contains($target_text).each(function(index, element){
$(element).removeClass(".hidden");
});
// for each row with the target text in it, find other rows with this rows class name in their class name and show them. Any other row should be hidden
});
感谢您的帮助
编辑1:
下面是注释后的编辑代码。我仍然无法让它工作:
$(document).ready(function()
{
search(".site-table", "#recordInput");
console.log("Document is ready");
}
))
这些方法都不管用!在每种方法中我做错了什么?您的问题是关于使用
索引的问题。必须放在括号之间的仅是搜索文本,-1
必须为空。请参见此示例:
var-its_-ok=$('div').first().html().indexOf('b')>-1
log('first one:',它的'u ok')
变量its_not_ok=$('div').first().html().indexOf('b'>-1)
console.log('secondone:',它不正常)
abcd
$element:contains
冒号在那里不是有效字符。另外,$element
未定义$(element).removeClass(“.hidden”)代码>移除类接受类,而不是选择器。删除句号。与.addClass(“.hidden”)相同
,删除也未定义的句点。$('list')。查找('a.box');您可以选择表Id,这就是范围,然后您可以搜索您想要的元素。您可以解释或给出这些关联类如何工作的示例吗?例如,如果一行有多个类,您如何知道在其他行中查找哪个类?还是全部?如果您依赖于每一行只有一个类,那么应该使用类似于data
属性的属性,否则添加类将导致功能中断。考虑在你的问题中包括一些HTML。
function search($search_table, $search_field)
{
console.log("Starting to search...");
$($search_field).on("keyup", function()
{
// Heighlight the search field
$(this).css('border', '1px solid red');
$search_text = $(this).val().toLowerCase();
// 1st method:
$search_result = $($search_table).find('tbody tr').text().toLowerCase().indexOf($search_text > -1); // Does not work! Nothing is found when there is a match
console.log("Search Result: ", $search_result);
// 2nd method:
$($search_table).find('tr').each(function(index, element){
// For each row, toggle the hidden class if the row contains the search text
$(this).toggleClass('hidden', $(this).text().toLowerCase().indexOf($search_text > -1));
});
// 3rd method:
var found = $($search_table).find('tbody tr').filter(function() {
return $(this).text().toLowerCase() == $search_text;
});
console.log("found: ", found);
});
}