gpt4 book ai didi

jquery - 如何给股价变化上色 : using css() method on dynamically created elements?

转载 作者:太空宇宙 更新时间:2023-11-04 10:34:10 24 4
gpt4 key购买 nike

我正在尝试设置 38 个动态创建的 span 元素的 css 颜色属性,这些元素填充了 API JSON 响应数据(实时证券交易所)。

带有 .change 的每个跨度元素都包含一个表示股价变化的数值。正如我们习惯的那样,每个变化指示器都应该根据其值具有特定的颜色。意思是,如果值 < 0,它应该显示为红色,如果值 > 0,它应该显示为绿色,如果值 = 0,则不应采取任何操作。

在我的 jQuery 脚本中,API 请求工作正常,我仅将其作为相关上下文包含在内。 我的问题 是 .change 元素的内部 html 的后续着色,实际上应该根据上述规则进行着色。

我猜 css() 方法无法正常工作,因为在页面 DOM 准备就绪后,JSON 数据被拉入文档。在这种情况下,实现适当的回调应该可以完成这项工作,但我不确定该怎么做。任何关于解决着色问题的方法或其他方法的建议都将非常有帮助!

请看下面我的代码。我感谢您的任何建议!

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Latest compiled and minified Bootstrap CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<style type='text/css'>

#magic-line {font-size: 90%;}
#gse-primer {padding: 0; text-align: center;}
#gse-wrapper {overflow: hidden;}
.stocks {display: inline-block; width: 120px; text-align: center;}
#gse {animation-name: slide; animation-duration: 90s; animation-iteration- count: infinite; animation-timing-function: linear; white-space: nowrap;}
@keyframes slide {from {margin-left: 0px;} to {margin-left: -4560px;}}

</style>
</head>
<body>

<div id='magic-line' class='col-xs-12'>
<div id='gse-primer' class='hidden-xs col-sm-2'>Share Price:<br>Vol. Traded</div>
<div id='gse-wrapper' class='col-sm-10'><span id='gse'></span></div>
</div>

<!-- jQuery Google CDN -->
<script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>

<script type='text/javascript'>

// API request for stock data

$(document).ready(function() {
$.getJSON("http://dev.kwayisi.org/apis/gse/live?callback=?", function(data) {
console.log(data);
$.each(data, function(i, value) {
$("#gse").append("<div class='stocks'>" + " " + "<b>" + value.name + "</b>" + " " + value.price + " " + "<span class='change'>" + value.change + "</span>" + "<br>" + value.volume + "</div>");
});
});
});

// adding color to indicate changes in share prices

$(document).ready(function() {
$('.change').each(function(i, obj) {
if ($(this).val() < 0) { $(this).css('color','#E60000'); }
else if ($(this).val() > 0) { $(this).css('color','#32cd32'); }
else { };
});
});

</script>

</body>
</html>

最佳答案

当您打印值时,在 span 元素中添加一个属性

<span class='change' data-change='" + value.change + "'>" + value.change + "</span>

因此在 CSS 中使用属性选择器来正确设置元素的样式

[data-change]      { /* color for positive values */ }
[data-change="0"] { /* color for zero value */ }
[data-change^="-"] { /* color for negative values */ }

Codepen Demo

这样做可以将样式部分与 javascript 部分分开,并且可以避免对 jQuery 库的无用且昂贵的调用(这对维护和性能都有好处)

关于jquery - 如何给股价变化上色 : using css() method on dynamically created elements?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36283335/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com