我有一个包含可变数量列的表.我写了一个函数迭代每行中的每个单元格来执行以下操作:
>检查是否存在输入
>检索输入的值
>将饼图附加到条件#1计算结果为true的任何单元格
这是我的代码:
function addPieCharts() { var htmlPre = "<span class='inlinesparkline' values='"; var htmlPost = "'></span>" var colors = ["red","blue"]; $("#MarketsTable tr").each(function () { $('td').each(function () { var value = $(this).find(":input").val(); var values = 100 - value + ',' + value; if (value > 0) { $(this).append(htmlPre + values + htmlPost); } }) }) $('.inlinesparkline').sparkline('html',{ type: 'pie',sliceColors: colors }); }
步骤1-3基本上如所描述的那样工作.运行时,饼图会添加到显示正确值的正确单元格中.我的问题是,我希望每个单元格只有一个饼图,其中存在输入.但是,我每个单元格有n个饼图,其中n等于表格中的列数.我怀疑我错误地使用jQuery的each()方法.谁能告诉我我做错了什么?
解决方法
当你选择td时将上下文传递给tr(this),这样它只会在当前的tr中查找td.试试这个.
$("#MarketsTable tr").each(function () { $('td',this).each(function () { var value = $(this).find(":input").val(); var values = 100 - value + ',' + value; if (value > 0) { $(this).append(htmlPre + values + htmlPost); } }) })