【问题标题】:extract array value on click jQuery单击jQuery提取数组值
【发布时间】:2017-03-28 13:20:46
【问题描述】:

尝试使用extractAssets();实现以下目标

  • 单击.clickable 时,将资产(lists[i].assets) 本身的值提取为0(类似于lists[i].assets - lists[i].assets)。

如您所见,我不是在提取,而是在执行 .html("$0"),因此需要动态提取。

see JSFiddle

感谢您的工作小提琴示例,谢谢。

var list1 = {
  id: 7,
  assets: 74651.90,
  ratePercent: 0.02,
  rateUSD: 24.03
};
var list2 = {
  id: 8,
  assets: 86735.79,
  ratePercent: -0.06,
  rateUSD: 2.41
};

var lists = [list1, list2];

$(document).ready(function() {
  show();
  extractAssets();
});

function extractAssets() {
  for (var i = 0; i < lists.length; i++) {
    //var text = $(".coin" + [i]).text();
    $(".clickable" + [i]).click(function() {
      //$(".coin" + [i]).text(text == $(this).text() - $(this).text() ? $(this).text() - $(this).text() : $(this).text());
      $(this).find(".coin").html("$0");
      //$(".coin" + [i]).text(text == $(this).text() ? "$0" : $(this).text());
    })
  }
}

function show() {
  for (var i = 0; i < lists.length; i++) {
    $(".DataContent").append('<div class="clickable' + [i] + '"><p class="data">' + lists[i].id + '</p><ul><li class="coin">$' + lists[i].assets + '</li><li class="rate"><span class="ratePercent">' + lists[i].ratePercent.toFixed(2) + '%</span> / <span class="rateUSD">$' + lists[i].rateUSD.toFixed(2) + '</span></li></ul></div>');
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section class="DataContent"></section>

【问题讨论】:

  • 你能解释一下你到底想达到什么目标吗……现在还不清楚
  • 在这种情况下我很抱歉,它基本上与小提琴中的行为完全相同,但不是在点击时通过 .html("$0") 设置它,而是最好提取点击的资产本身(例如单击 $86735.79 以相同的金额($86735.79)提取它,这将导致 0)
  • 请在此处发布您的代码,而不仅仅是在 jsfiddle。使用Stack Snippet
  • @Barmar,我添加了代码,希望有帮助吗?感谢您的宝贵时间。

标签: jquery arrays loops object extraction


【解决方案1】:

您使用数据作为参考,但使用 html dom 元素进行操作,这对我来说似乎有点奇怪。我几乎不向我们推荐模板语言。无论如何...使用您的实际代码,这就是我要更新的内容:

function extractAssets() {
    $(".clickable").click(function(){
        var currentCoin = $(this).find('.coin');
      var difference = (Number($(currentCoin).text().replace('$','')) - Number($(currentCoin).text().replace('$','')));
      $(currentCoin).html('$' + difference);
        });
}

function show() {
  for (var i = 0; i < lists.length; i++) {
    $(".DataContent").append('<div class="clickable"><p class="data">' + lists[i].id + '</p><ul><li class="coin">$' + lists[i].assets + '</li><li class="rate"><span class="ratePercent">' + lists[i].ratePercent.toFixed(2) + '%</span> / <span class="rateUSD">$' + lists[i].rateUSD.toFixed(2) + '</span></li></ul></div>');
  }
}

请记住,这不会格式化最后的金额。

问候

【讨论】:

  • 感谢埃斯皮诺先生的回答,但这不是我要找的。另外,是的,我同意,因此我在征求意见,我更喜欢真正的提取,而不是通过 .html() 设置 0。祝你有美好的一天。
  • mmm 你试过代码了吗? var difference = (Number($(currentCoin).text().replace('$','')) - Number($(currentCoin).text().replace('$',''))); 那行进行提取,而不是设置为 0。您认为缺少什么?
  • 我的错误,重新尝试粘贴所有内容,似乎正确,请给我几分钟时间完全适应它,我会将其标记为正确。感谢您的帮助和坚持:)
  • :D!没问题,很高兴为您提供帮助
  • 抱歉,大卫,您是否有机会调整您所做的,但使用此更新的 JSFiddle ?,它是相同的,但添加了 .toFixed(2).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")lists[i].assets 以提供货币格式,所以现在您的解决方案返回 $南。我已经尝试了很多调整,但没有,万分感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-04
  • 2013-06-11
  • 1970-01-01
相关资源
最近更新 更多