使用JQuery显示基于用户SELECT输入的多ID内容

7kjnsjlb  于 2023-11-17  发布在  jQuery
关注(0)|答案(1)|浏览(134)

我正在为我的书系列建立一个人物维基,并试图隐藏剧透。读者会看到一个提示框,询问他们最近完成的书是哪本。当他们选择这个时,应该会出现带有剧透的div。
我有一个非常基本的函数,可以根据输入(Js Fiddle here)隐藏或显示div,它工作得很好。
问题是,读过第6本书的人应该也能看到第1-5本书的div,我不知道如何做到这一点。
有什么建议吗?我也不完全相信这是隐藏/显示分散在页面上的内容的最佳方法,所以如果有人有更好的想法,请考虑我的所有耳朵!

$(document).ready(function() {
  $('.spoiler').hide();
  $('#book-1').show();
  $('#spoilerSelect').change(function() {
    $('.spoiler').hide();
    $('#' + $(this).val()).show();
  })
});

个字符

9rnv2umw

9rnv2umw1#

这里是一个工作代码显示的破坏者,直到最后一本书的选择
这将坚持选择和选择的顺序

$(function() {
  const $spoiler = $('.spoiler').hide();
  const spoilers = $('#spoilerSelect option').map(function() {
    return +this.value.split('-').pop(); // get the int of the option value
  }).get() // get the list
  $('#book-1').show();
  $('#spoilerSelect').on("change", function() {
    $spoiler.hide();
    const idx = this.selectedIndex;
    const last = spoilers[idx]; // get last book 
    $spoiler.each(function() {
      const divIdx = +this.id.split("-").pop(); // get the int of the div
      $(this).toggle(divIdx <= last)
    })
  })
});

个字符
这里是一个prevAll版本-它需要$.escapeSelector,因为句号和addBack选择的基础,为所有

$(function() {
  const $spoiler = $('.spoiler').hide();
  $('#book-1').show();
  $('#spoilerSelect').on("change", function() {
    $spoiler.hide();
    $(`#${$.escapeSelector(this.value)}`)
      .prevAll() // previous siblings
      .addBack() // and itself
      .show()
  })
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<select id="spoilerSelect">
  <option value="book-1">Book One</option>
  <option value="book-2">Book Two</option>
  <option value="book-3">Book Three</option>
  <option value="book-3.5">Book Three.Five</option>
  <option value="book-4">Book 4</option>
  <option value="book-4.5">Book Four.Five</option>
  <option value="book-5">Book 5</option>
  <option value="book-6">Book 6</option>
</select>

<div id="book-1" class="spoiler">
  Book One
</div>

<div id="book-2" class="spoiler">
  Book Two
</div>
<div id="book-3" class="spoiler">
  Book Three
</div>
<div id="book-3.5" class="spoiler">
  Book Three.Five
</div>
<div id="book-4" class="spoiler">
  Book Four
</div>
<div id="book-4.5" class="spoiler">
  Book Four.Five
</div>

<div id="book-5" class="spoiler">
  Book Five
</div>

<div id="book-6" class="spoiler">
  Book 6
</div>

的字符串

相关问题