【问题标题】:How to pass value in key value pair jquery?如何在键值对jquery中传递值?
【发布时间】:2022-01-21 09:54:36
【问题描述】:

我想传递(返回) data-filter 值和 children text ,我可以传递 data-filter 值但是我无法通过儿童文本。我的 HTML 和 JQuery 如下:

$(document).ready(function() {
  $('.sidebar-filter').on('click', function() {
    var filterobj = {};
    $(".sidebar-filter").each(function(index, ele) {

      var filterval = $(this).children('a').text();
      var filterkey = $(this).data('filter');

      filterobj[filterkey] = Array.from(document.querySelectorAll('li[data-filter=' + filterkey + '].active')).map(function(el) {
        return ele.value;
      });

    });
    console.log(filterobj);

  });
});
<ul>
  <li class="sidebar-filter " data-filter="category" data-value="1">
    <a href="#">Item Name</a>
  </li>
</ul>

我的回报会是这样的:

类别:数组 [undefined]

我想要数组中的值而不是未定义的。

【问题讨论】:

  • 1) 你没有任何li 类活动2) .map(function(el) { ele.value... 将使用外部.each 中的ele。修复这些并且它可以工作(?)jsfiddle.net/rf76teyb 但是 3)li 元素没有 .value 属性,因此不清楚您要尝试在最终数组中获得什么。也许$(el).data("value")jsfiddle.net/rf76teyb/1
  • 我有 css 添加 class=点击时激活。现在打印数据过滤器值,但我无法将文本传递到数组中。我想传递来自 li 的数据值或来自标签的文本。
  • 它有效。谢谢你。你能分享我如何通过 children('a').text();与 $(el).data("value") 相同
  • $(el).text() 会得到所有孩子的文本,不需要先选择孩子

标签: javascript jquery


【解决方案1】:

你的lis没有value属性,实际上你想读取data-value属性,你可以通过将return ele.value;转换为return el.getAttribute('data-value');来实现你的目标

$(document).ready(function() {
  $('.sidebar-filter').on('click', function() {
    var filterobj = {};
    $(".sidebar-filter").each(function(index, ele) {

      var filterval = $(this).children('a').text();
      var filterkey = $(this).data('filter');

      filterobj[filterkey] = Array.from(document.querySelectorAll('li[data-filter=' + filterkey + '].active')).map(function(el) {
        return el.getAttribute("data-value");
      });

    });
    console.log(filterobj);

  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<ul>
  <li class="sidebar-filter active" data-filter="category" data-value="1">
    <a href="#">Item Name</a>
  </li>
</ul>

【讨论】:

  • 这样扔 null: category: Array [ null ]
  • 你确定你有active类的li吗?
  • 看看我回复中的sn-p,我手动将active类添加到li。结果是你预期的吗?
  • 是的,我也有同样的情况,活动类将添加另一个 js 文件中的 on(click) 事件。但是对于您的代码,它仅传递 null,而不是值。
  • 代码有误,应该是return el.getAttribute('data-value')。又不行了?
猜你喜欢
  • 1970-01-01
  • 2023-04-05
  • 2021-03-04
  • 2017-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-28
  • 2019-02-22
相关资源
最近更新 更多