jquery - 如何编写一个 jQuery 函数将 data-id 循环以显示某个元素?

标签 jquery html css custom-data-attribute

我想做一个显示/隐藏功能,点击并识别元素的数据ID,将显示具有相同ID的相关元素。

我知道我能做到:

$('a[data-id="s1"]').click(function() {
  $(div[data-value="s1"]).show();
});
$('a[data-id="s2"]').click(function() {
  $(div[data-value="s2"]).show();
});
$('a[data-id="s3"]').click(function() {
  $(div[data-value="s3"]).show();
});

...等等,但是代码会很长。

所以我只是想知道我是否可以将这些 id 制作成一个数组,然后在 jquery 中循环它们,这样我就可以获得一个干净的代码。

我希望以上所有内容都可以在一个函数中完成,我可以分别识别 s1/s2/s3...。

非常感谢您阅读我的问题,我希望能从你们那里学到更多。非常感谢!

最佳答案

  • <a>被点击:
  • 获取其[data=id]的值
  • 然后通过.each() <div>找到它的值 [data-value]
  • 并比较每个值和.show() <div>匹配时。

鉴于 OP 中的信息,这是最全面和通用的方法。如果没有更多信息(如 HTML、类等),“clean one function”选项是不可行的。

$('a').on('click', function() {
  var id = $(this).data('id');
  $('div').each(function() {
    var value = $(this).data('value');
    if (value === id) {
      $(this).show()
    }
  });
});
hr~div {
  display: none
}
<a href='#/' data-id='0'>0</a>
<a href='#/' data-id='1'>1</a>
<a href='#/' data-id='2'>2</a>
<hr>
<div data-value='0'>0</div>
<div data-value='1'>1</div>
<div data-value='2'>2</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

关于jquery - 如何编写一个 jQuery 函数将 data-id 循环以显示某个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56415962/

相关文章:

php - 在请求播放之前,如何阻止嵌入的声音片段下载到浏览器缓存中?

jquery - 尽管名称重复,但强制 div 类对 jQuery 使用不同的 css 类?

c# - 无法为中继器控件内的 LinkBut​​ton 设置选定样式

javascript - 根据计算选择 Sprite

javascript - 查找具有 z 索引的元素

jquery - Uncaught ReferenceError : data is not defined in doing a math calculation in jQuery

html - HTML 元素和 HTML 标签有什么区别?

html - 在缩小 HTML 之前我应该​​考虑什么?

javascript - 使覆盖文本的 div 仅对文本进行动画处理和着色

javascript - 垂直菜单/导航自动滚动