В вашей логике есть пара проблем.Во-первых, вы делаете find('img')
из ссылки на input
, следовательно, никогда ничего не найдете.Во-вторых, вы ищете совпадение по всему значению alt
.Предположительно из описания вы хотите сопоставить по каждому слову.Вы можете добиться этого, используя filter()
вместе с регулярным выражением, что-то вроде этого:
$("#filter").on('input', function() {
var mySearch = $(this).val();
var $media = $(".media");
if (mySearch.trim().length > 0) {
var $mediaToShow = $media.hide().filter(function() {
var re = new RegExp(mySearch, 'gi');
return re.test($(this).find('img[alt]').prop('alt'));
});
$mediaToShow.show();
} else {
$media.show();
}
});
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<h2>My Items</h2><br>
<input class="form-control" type="text" class="text-input" id="filter" placeholder=" Search item" /><br/><br/>
<div class="media">
<div class="media-left">
<a href="#">
<img class="media-object" src="http://www.placebear.com/60/60" alt="Mountain brown bear">
</a>
</div>
<div class="media-body">
<h3 class="media-heading">1</h3>bear hug
</div>
</div>
<div class="media">
<div class="media-left">
<a href="#">
<img class="media-object" src="http://www.placebear.com/60/60" alt="Russian Road salmon bear">
</a>
</div>
<div class="media-body">
<h3 class="media-heading">2</h3>bear fight
</div>
</div>
<div class="media">
<div class="media-left">
<a href="#">
<img class="media-object" src="http://www.placebear.com/60/60" alt="Uganda contest forest ">
</a>
</div>
<div class="media-body">
<h3 class="media-heading">3</h3>bear stare
</div>
</div>
<div class="media">
<div class="media-left">
<a href="#">
<img class="media-object" src="http://www.placebear.com/60/60" alt="UK London Restaurant meat">
</a>
</div>
<div class="media-body">
<h3 class="media-heading">4</h3>bears bath
</div>
</div>
<div class="media">
<div class="media-left">
<a href="#">
<img class="media-object" src="http://www.placebear.com/60/60" alt="Somalia splash Sea">
</a>
</div>
<div class="media-body">
<h3 class="media-heading">5</h3>bear splash
</div>
</div>
Также обратите внимание на использование события input
над keyup
, так как первое также будет работать при вставке содержимого в поле.