如何使用 jQuery 创建带标题的图像链接搜索脚本

问题描述 投票:0回答:1

一次输入30个字符。让我知道这是否有效。

javascript jquery error-handling event-handling
1个回答
1
投票

each
的第一个参数不是对象。这是索引。您可以使用
this
(或添加第二个参数)而不是
element
变量。

$("#site-search").keyup(function() {
  let searchInput = $("#site-search").val().toLowerCase();
  $('.images-container > a').each(function(index, element) {
    let caption = $(element).attr('data-title').toLowerCase();

    if (caption.includes(searchInput)) {
      $(element).show();
    } else {
      $(element).hide(); //Hide elements that dont include the search word.
    }
  });
});

$("#site-search").keyup(function() {
  let searchInput = $("#site-search").val().toLowerCase();
  $('.images-container > a').each(function(index, element) {
    let caption = $(element).attr('data-title').toLowerCase();

    if (caption.includes(searchInput)) {
      $(element).show();
    } else {
      $(element).hide(); //Hide elements that dont include the search word.
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="search" id="site-search" placeholder="Search(16pt)">

<div class="images-container">
  <a href="photos/01.jpg" data-alt="Hay Bales" data-lightbox="image-1" data-title="I love hay bales. Took this snap on a drive through the countryside past some straw fields."><img src="photos/thumbnails/01.jpg" alt="Image 1"></a>
  <a href="photos/02.jpg" data-alt="Lake" data-lightbox="image-1" data-title="The lake was so calm today. We had a great view of the snow on the mountains from here."><img src="photos/thumbnails/02.jpg" alt="Image 2"></a>
  <a href="photos/03.jpg" data-alt="Canyon" data-lightbox="image-1" data-title="I hiked to the top of the mountain and got this picture of the canyon and trees below."><img src="photos/thumbnails/03.jpg" alt="Image 3"></a>
  <a href="photos/04.jpg" data-alt="Iceberg" data-lightbox="image-1" data-title="It was amazing to see an iceberg up close, it was so cold but didn’t snow today. "><img src="photos/thumbnails/04.jpg" alt="Image 4"></a>
  <a href="photos/05.jpg" data-alt="Desert" data-lightbox="image-1" data-title="The red cliffs were beautiful. It was really hot in the desert but we did a lot of walking through the canyons."><img src="photos/thumbnails/05.jpg" alt="Image 5"></a>
  <a href="photos/06.jpg" data-alt="Fall" data-lightbox="image-1" data-title="Fall is coming, I love when the leaves on the trees start to change color."><img src="photos/thumbnails/06.jpg" alt="Image 6"></a>
  <a href="photos/07.jpg" data-alt="Plantation" data-lightbox="image-1" data-title="I drove past this plantation yesterday, everything is so green!"><img src="photos/thumbnails/07.jpg" alt="Image 7"></a>
  <a href="photos/08.jpg" data-alt="Dunes" data-lightbox="image-1" data-title="My summer vacation to the Oregon Coast. I love the sandy dunes!"><img src="photos/thumbnails/08.jpg" alt="Image 8"></a>
  <a href="photos/09.jpg" data-alt="Countryside Lane" data-lightbox="image-1" data-title="We enjoyed a quiet stroll down this countryside lane."><img src="photos/thumbnails/09.jpg" alt="Image 9"></a>
  <a href="photos/10.jpg" data-alt="Sunset" data-lightbox="image-1" data-title="Sunset at the coast! The sky turned a lovely shade of orange."><img src="photos/thumbnails/10.jpg" alt="Image 10"></a>
  <a href="photos/11.jpg" data-alt="Cave" data-lightbox="image-1" data-title="I did a tour of a cave today and the view of the landscape below was breathtaking."><img src="photos/thumbnails/11.jpg" alt="Image 11"></a>
  <a href="photos/12.jpg" data-alt="Blueballs" data-lightbox="image-1" data-title="I walked through this meadow of bluebells and got a good view of the snow on the mountain before the fog came in."><img src="photos/thumbnails/12.jpg" alt="Image 12"></a>
</div>

选项 2: 或者您可以使用

filter
来过滤
a
元素,例如:

$("#site-search").keyup(function() {
  let searchInput = $("#site-search").val().toLowerCase();
  $('.images-container > a').hide().filter(function() {
    return $(this).attr('data-title').toLowerCase().includes(searchInput);
  }).show();
});

$("#site-search").keyup(function() {
  let searchInput = $("#site-search").val().toLowerCase();
  $('.images-container > a').hide().filter(function() {
    return $(this).attr('data-title').toLowerCase().includes(searchInput);
  }).show();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="search" id="site-search" placeholder="Search(16pt)">

<div class="images-container">
  <a href="photos/01.jpg" data-alt="Hay Bales" data-lightbox="image-1" data-title="I love hay bales. Took this snap on a drive through the countryside past some straw fields."><img src="photos/thumbnails/01.jpg" alt="Image 1"></a>
  <a href="photos/02.jpg" data-alt="Lake" data-lightbox="image-1" data-title="The lake was so calm today. We had a great view of the snow on the mountains from here."><img src="photos/thumbnails/02.jpg" alt="Image 2"></a>
  <a href="photos/03.jpg" data-alt="Canyon" data-lightbox="image-1" data-title="I hiked to the top of the mountain and got this picture of the canyon and trees below."><img src="photos/thumbnails/03.jpg" alt="Image 3"></a>
  <a href="photos/04.jpg" data-alt="Iceberg" data-lightbox="image-1" data-title="It was amazing to see an iceberg up close, it was so cold but didn’t snow today. "><img src="photos/thumbnails/04.jpg" alt="Image 4"></a>
  <a href="photos/05.jpg" data-alt="Desert" data-lightbox="image-1" data-title="The red cliffs were beautiful. It was really hot in the desert but we did a lot of walking through the canyons."><img src="photos/thumbnails/05.jpg" alt="Image 5"></a>
  <a href="photos/06.jpg" data-alt="Fall" data-lightbox="image-1" data-title="Fall is coming, I love when the leaves on the trees start to change color."><img src="photos/thumbnails/06.jpg" alt="Image 6"></a>
  <a href="photos/07.jpg" data-alt="Plantation" data-lightbox="image-1" data-title="I drove past this plantation yesterday, everything is so green!"><img src="photos/thumbnails/07.jpg" alt="Image 7"></a>
  <a href="photos/08.jpg" data-alt="Dunes" data-lightbox="image-1" data-title="My summer vacation to the Oregon Coast. I love the sandy dunes!"><img src="photos/thumbnails/08.jpg" alt="Image 8"></a>
  <a href="photos/09.jpg" data-alt="Countryside Lane" data-lightbox="image-1" data-title="We enjoyed a quiet stroll down this countryside lane."><img src="photos/thumbnails/09.jpg" alt="Image 9"></a>
  <a href="photos/10.jpg" data-alt="Sunset" data-lightbox="image-1" data-title="Sunset at the coast! The sky turned a lovely shade of orange."><img src="photos/thumbnails/10.jpg" alt="Image 10"></a>
  <a href="photos/11.jpg" data-alt="Cave" data-lightbox="image-1" data-title="I did a tour of a cave today and the view of the landscape below was breathtaking."><img src="photos/thumbnails/11.jpg" alt="Image 11"></a>
  <a href="photos/12.jpg" data-alt="Blueballs" data-lightbox="image-1" data-title="I walked through this meadow of bluebells and got a good view of the snow on the mountain before the fog came in."><img src="photos/thumbnails/12.jpg" alt="Image 12"></a>
</div>

© www.soinside.com 2019 - 2024. All rights reserved.