2017-03-22 77 views
1

我目前得到的图像的表:过滤表并仅显示​​它匹配

<table> 
<tr> 
    <td><img src="img1.png">Image 1</td> 
    <td><img src="img2.png">Image 2</td> 
    <td><img src="img3.png">Image 3</td> 
    <td><img src="img4.png">Image 4</td> 
    <td><img src="img5.png">Image 5</td> 
    <td><img src="img6.png">Image 6</td> 
</tr> 
<tr> 
    <td><img src="img7.png">Image 7</td> 
    <td><img src="img8.png">Image 8</td> 
    <td><img src="img9.png">Image 9</td> 
    <td><img src="img10.png">Image 10</td> 
    <td><img src="img11.png">Image 11</td> 
    <td><img src="img12.png">Image 12</td> 
</tr></table> 

,并希望把搜索过滤器在他们身上。我在互联网上试过了几个Javascript过滤器,但它过滤了整个行,​​而不仅仅是我想要的图像。有任何想法吗?非常感谢。

+0

什么是过滤条件?单元格文字?你使用任何lib .... jquery? – kidwon

+0

是的,单元格文本。目前没有使用任何库,但如果它使它更容易,那么我可以。谢谢 –

+0

jQuery让人们更方便确实 – kidwon

回答

1

快速和肮脏。我设置了一个输入,当输入文本时,它使用jQuery来筛选包含输入文本的任何div。当没有文字输入时,不会突出显示。

$(function() { 
 
    $("#filter-string").on("keyup", function() { 
 
    var filterBy = $(this).val(); 
 
    $("td").removeClass("filtered").show(); 
 
    if (filterBy.length > 0) { 
 
     $("td").hide(); 
 
     $("td:contains('" + filterBy + "')") 
 
     .addClass("filtered").show(); 
 
    } 
 
    }); 
 
});
.filtered { 
 
    background-color: #ccc; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <td><img src="img1.png">Image 1</td> 
 
    <td><img src="img2.png">Image 2</td> 
 
    <td><img src="img3.png">Image 3</td> 
 
    <td><img src="img4.png">Image 4</td> 
 
    <td><img src="img5.png">Image 5</td> 
 
    <td><img src="img6.png">Image 6</td> 
 
    </tr> 
 
    <tr> 
 
    <td><img src="img7.png">Image 7</td> 
 
    <td><img src="img8.png">Image 8</td> 
 
    <td><img src="img9.png">Image 9</td> 
 
    <td><img src="img10.png">Image 10</td> 
 
    <td><img src="img11.png">Image 11</td> 
 
    <td><img src="img12.png">Image 12</td> 
 
    </tr> 
 
</table> 
 
<div class="filter-pane"> 
 
    <label for="filter-string">Enter filter</label> 
 
    <input type="text" id="filter-string" /> 
 
</div>

根据您的请求,现在隐藏一切,但匹配输入字符串的元素。没有输入字符串,一切都会显示。

+0

感谢您的代码Snowmonkey。我已经得到它的工作,但在强调代替,它删除的结果,但是如果搜索“图像1”,它会除去图像2,3,4,5,6,7,8,9,但是该间隙是还在那儿。无论如何,当照片被滤镜移除时,照片会向上移动吗?希望这是有道理的,非常感谢。 –

+0

@TCampbell,试试这个尺寸。 – Snowmonkey

+0

对不起,不知道你的意思是什么大小。你能提供另一个例子吗?谢谢。 –

0
// For instance filtering the 7th image 
var filterCriteriaStr = 7; 
$('td').not(':contains('+filterCriteriaStr+')').hide(); 
$('td').filter(':contains('+filterCriteriaStr+')').show(); 

这里的工作示例:https://jsfiddle.net/9gt3t2jk/1/

+0

是啊,也许那不过是一个特殊的要求:) – kidwon

+0

对不起,@kidwon,这是一个跨brainfart。同时在幻灯片/节目转盘上工作。我的错! – Snowmonkey