[英]Show Div's based on user input
我正在處理其中一項要求,我必須根據用戶輸入顯示 div。 下面是代碼結構。
<input id="location-filter" type="text">
<div class="item">
<div class="item-image">
<a href="">
<img class="img-fluid" src="">
<div class="item-badges"></div>
<div class="item-meta">
<div class="item-price">
<small></small>
</div>
</div>
</a>
</div>
<div class="item-info">
<h3 class="item-title"><a href=""></a></h3>
<div class="item-location">
<i class="fa fa-map-marker "></i>
<p>London</p>
</div>
<div class="item-details-i">
<span class="bedrooms" title="Bedrooms">3 <i class="fa fa-bed"></i></span>
<span class="bathrooms" title="Bathrooms">2 <i class="fa fa-bath"></i></span>
<span class="bathrooms" title="Car Space">1 <i class="fa fa-car"></i></span>
</div>
<div class="item-details">
<p><a href="">Read More</a></p>
</div>
</div>
</div>
<div class="item">
<div class="item-image">
<a href="">
<img class="img-fluid" src="">
<div class="item-badges"></div>
<div class="item-meta">
<div class="item-price">
<small></small>
</div>
</div>
</a>
</div>
<div class="item-info">
<h3 class="item-title"><a href=""></a></h3>
<div class="item-location">
<i class="fa fa-map-marker "></i>
<p>Canada</p>
</div>
<div class="item-details-i">
<span class="bedrooms" title="Bedrooms">3 <i class="fa fa-bed"></i></span>
<span class="bathrooms" title="Bathrooms">2 <i class="fa fa-bath"></i></span>
<span class="bathrooms" title="Car Space">1 <i class="fa fa-car"></i></span>
</div>
<div class="item-details">
<p><a href="">Read More</a></p>
</div>
</div>
</div>
有兩個 'item' div,區別僅是 'item-location' div,包含位置名稱的 p 標簽。 如果用戶輸入“倫敦”,我想顯示所有包含文本“倫敦”的“項目”div 並隱藏其他“項目”div。 我嘗試了下面的代碼,但沒有運氣。 任何幫助,將不勝感激。 謝謝你。
$("#location-filter").keyup(function() {
// Retrieve the input field text and reset the count to zero
var filter = $(this).val(),
count = 0;
// Loop through the div
$('.item > .item-location p').each(function() {
// If the list item does not contain the text phrase fade it out
if ($("this").text().search(new RegExp(filter, "i")) < 0) {
$(this).hide();
// Show the list item if the phrase matches and increase the count by 1
} else {
$(this).show();
count++;
}
});
});
你的代碼有一些錯誤。 >
用於選擇直接子級。 .item
沒有.item-location
元素作為直接子元素。 這就是為什么each
迭代器根本沒有運行的原因。 除此之外, if
條件中的this
用雙引號括起來,使其成為字符串。 最后一個錯誤是,在each
循環中, this
指的是被迭代的元素。 要隱藏或顯示.item
,您必須使用closest
來到.item
先.item
$("#location-filter").keyup(function() { var filter = $(this).val(), count = 0; $('.item .item-location p').each(function() { if ($(this).text().search(new RegExp(filter, "i")) < 0) { $(this).closest('.item').hide(); } else { $(this).closest('.item').show(); count++; } }); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input id="location-filter" type="text"> <div class="item"> <div class="item-image"> <a href=""> <img class="img-fluid" src=""> <div class="item-badges"></div> <div class="item-meta"> <div class="item-price"> <small></small> </div> </div> </a> </div> <div class="item-info"> <h3 class="item-title"> <a href=""></a> </h3> <div class="item-location"> <i class="fa fa-map-marker "></i> <p>London</p> </div> <div class="item-details-i"> <span class="bedrooms" title="Bedrooms">3 <i class="fa fa-bed"></i></span> <span class="bathrooms" title="Bathrooms">2 <i class="fa fa-bath"></i></span> <span class="bathrooms" title="Car Space">1 <i class="fa fa-car"></i></span> </div> <div class="item-details"> <p><a href="">Read More</a></p> </div> </div> </div> <div class="item"> <div class="item-image"> <a href=""> <img class="img-fluid" src=""> <div class="item-badges"></div> <div class="item-meta"> <div class="item-price"> <small></small> </div> </div> </a> </div> <div class="item-info"> <h3 class="item-title"> <a href=""></a> </h3> <div class="item-location"> <i class="fa fa-map-marker "></i> <p>Canada</p> </div> <div class="item-details-i"> <span class="bedrooms" title="Bedrooms">3 <i class="fa fa-bed"></i></span> <span class="bathrooms" title="Bathrooms">2 <i class="fa fa-bath"></i></span> <span class="bathrooms" title="Car Space">1 <i class="fa fa-car"></i></span> </div> <div class="item-details"> <p><a href="">Read More</a></p> </div> </div> </div>
我認為問題出在 Jquery 中的 CSS 選擇器上。
$('.item .item-location p')
應該是對的。 這是因為使用箭頭,它會在其無法找到的類“item”的元素正下方尋找具有“item-location”的元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.