我必须过滤一个html表。为此,我为所有tr
元素创建了每个回调,并测试其中一个tr-children
是否包含某些特定模式。
$("#filter").keypress(function() {
var filter = $(this).val();
$("#table1 tr[data-config]").each(function(){
var val = $(this).find(":contains('" + filter + "')");
if(val.length > 0){
$(this).css("display","table-row");
}else{
$(this).css("display","none");
}
});
});
它有效,但有一个函数来测试一个元素是否包含一些文本?
目前,我检索包含模式的所有元素的列表,如果它大于零则计数。是否有一个jQuery函数,它测试是否发生这种模式并返回一个布尔值?该表可以包含许多行,因此我希望尽可能少的开销。
答案 0 :(得分:4)
///// replace these lines...
// var val = $(this).find(":contains('" + filter + "')");
// if(val.length > 0){
///// with this line
if($(this).text().match(filter)){
这可以通过将整行内容转换为文本字符串,然后使用简单的字符串比较函数来检查文本中是否包含过滤器(因此行)
答案 1 :(得分:0)
当过滤器区分大小写时,这就是如何使其不敏感:
$home_timeline = $twitteroauth->get('statuses/user_timeline', array('count' => 4));
echo "<pre>";
print_r($home_timeline->id_str);
echo "</pre>";
道具到Billy!
答案 2 :(得分:0)
答案很好,但使用的方法更简单:contains
一般来说,这样做:
$(".class:contains('texttofind')").css("display", "none");
通过上面的具体示例,执行以下操作:
$("#table1 tr[data-config]:contains('" + filter + "')").css("display","table-row");
您可以在此处找到更多信息:https://api.jquery.com/contains-selector/
这样可以避免使用.each
或.find
循环播放。