按值过滤.data()对象中的项
Filtering items in .data() object by value
编辑:忘记jsfield
我有一个由许多路径/形状组成的SVG图像,每个图像都包含在具有id
的<g>
元素中。为了简单起见,我将示例限制为两个形状。
我也有一系列的<div>
s -代表几种颜色-其中有一个data-attribute
,可以匹配SVG形状<g>
id。所以:
<svg width="428" height="230" xmlns="http://www.w3.org/2000/svg">
<g id="square">
<rect height="91" width="91" y="68.5" x="82.5"/>
</g>
<g id="circle">
<ellipse ry="48" rx="48" id="svg_2" cy="111.5" cx="295.5"/>
</g>
</svg>
<div class="colors" data-square="5" data-circle="0">Red</div>
<div class="colors" data-square="1" data-circle="3">Blue</div>
<div class="colors" data-square="0" data-circle="9">Green</div>
点击.color
<div>
,我想:
在对象中存储所有属性(键和值)(完成),
过滤掉任何小于1的属性(我不能弄清楚的部分)
然后添加一个类(
.active
)到任何svg<g>
元素与id
匹配的属性键(完成,没有过滤)。
这是我的jQuery,以及我试图过滤data()
对象的注释:
var shapes = $('svg g');
$('.colors').click(function () {
//remove active class from all shapes
$(shapes).attr("class", "");
//store data attributes
var colortotals = $(this).data();
//filter attributes greater than 0
//var colortotals = $(this).data().filter(function() {
//return $(this) > "0";
//});
//add active class to any shape with id matching an attribute key
$.each(colortotals, function(key, value) {
alert(key + ": " + value);
$(shapes).filter('#' + key).attr("class", "active");
});
});
这是你要找的吗?
$.each(colortotals, function(key, value) {
if (Number(value) > 0) {
$(shapes).filter('#' + key).attr("class", "active");
}
});
http://jsfiddle.net/rMBPP/31/对不起,如果我没有理解正确的问题
相关文章:
- Angular:使用选择列表选择过滤代码中的对象
- 如何使用javascript过滤复杂的json对象
- 使用jquery grep过滤具有值数组的json对象
- 执行过滤对象数组的方法
- 按值名称过滤掉重复的对象,并将其放入新数组中
- 如何按数组/对象值的倍数过滤对象数组
- 访问KendoUI中Datasource过滤对象的字段
- 通过 nodejs 过滤对象数组
- 根据复选框输入过滤深层对象
- 如何过滤对象内部深度堆叠的数据(并在之后编辑删除它)
- 使用Angular js ng repeat指令过滤json对象
- 过滤父对象时,输入将丢失其值
- AngularJS ng-repeat对象,按对象过滤
- 嵌套对象过滤 - 角度
- AngularJS 过滤器:将具有唯一 ID 的对象过滤到单独的对象中
- 使用 angularjs 中的特殊 $ 字符按对象过滤不起作用
- 列表理解,如JavaScript中的对象过滤
- 用javascript对象过滤json
- 谷歌地图-基于JavaScript对象过滤结果
- 用javascript中的另一个对象过滤对象