2013-09-30 192 views
1

我開始之前,這是一種Search for divs that contain specified text隱藏父元素時,有沒有匹配的子元素

嘿「第2部分」的。 我的div的列表,每個有幾個申報單(樣式),它看起來像這樣:

<body> 
<div class='divlist'> 

<div> 
    <div>abc</div><div>def</div><div>ghi</div> 
</div> 

</div> 
</body> 

body標籤我也得到了一個搜索(<input type='text' id='search' />

和我jQuery的:

$('#search').on('input', function(){ 
    var text = $(this).val(); 
    $('.divlist div').show();  
    $('.divlist div:not(:contains(' + text + '))').hide(); 
}); 

現在,如果我搜索abc它會刪除包含defghi股利,儘管搜索相匹配的DIV(具有內ABCDEFGHI)。 因此: 如果沒有任何匹配(例如,j),我將如何創建一個搜索功能來刪除主div,並顯示包含其他div的div內的所有div,而不管div有多少匹配。

在此先感謝。

ps。如果有人知道一個更好的標題,隨意改變它

回答

1

相反過濾所有的div元素,篩選.divlist元素:使用兒童選擇

$('.divlist:not(:contains(' + text + '))').hide(); 

或其直系div孩子:

$('.divlist > div:not(:contains(' + text + '))').hide(); 

您也可以使用.filter()方法,它比昂貴的:not(:contains())選擇器更有效率:

$('.divlist > div').hide().filter(function() { 
    return $(this).text().indexOf(text) > -1; 
}).show(); 
+0

如果它包含'class =「first3」'',我將如何排除包含'abc'的div? – PMint

相關問題