我写了一个插件,它从节点获取数据属性并做一些工作,
问题:第一次加载页面时,它运行正常。但是当页面加载后我将数据属性“data-range”更改为其他值,然后当我单击按钮时,它显示的是旧值而不是更新的值。 我如何访问插件中的属性。
var svgThis = this.$element.parent().parent().parent().find('svg').attr('id');
var dataRangeString = $("#"+svgThis).find(".focus").data("range");
但是甚至“.focus”数据范围也发生了变化,我尝试打印新的datarangeString,它显示了第一次加载页面时显示的旧值。 我被困住了,对我来说非常重要。 知道如何解决这个问题。
详细信息: -
我有一个用于创建图表的插件,因为我在缩放图表时会更改数据属性。 例如。加载第一个图表时,数据范围是1jan1015到8aug2015 在缩放数据范围更新4april2015到8June2015之后
我有一个插件来导出图表的数据。所以第一次页面加载时,我得到数据1jan1015到8aug2015(罚款) 但是在我缩放数据并再次单击按钮后,它会向我显示相同的数据。
svg-plugin示例代码
drawSvg(){
....// code to generate svg element with data provided
generateMenu(this.$element.selector,this.options.data);
.... // code to update the data when zoomed
focus.attr("data-range",x.domain()); //focus is object created in d3 of a node <g class="focus">
}
generateMenuplugin
generateMenu(){
var svgThis = this.$element.parent().parent().parent().find('svg').attr('id');
var dataRangeString = $("#"+svgThis).find(".focus").data("range");
}
答案 0 :(得分:1)
实际上要设置数据属性,您不想使用.data()
吗?
focus.data("range", x.domain());
function generateMenu() {
return this.closest('svg').is(':focus').data('range');
}
结束更新
另一次更新......或者,如果这适用于您的代码,则可以删除generateMenu函数。
function drawSvg(){
....// code to generate svg element with data provided
var range = this.$element.selector,this.options.data.closest('svg').is(':focus').data('range');
// do something with range
.... // code to update the data when zoomed
focus.data("range",x.domain()); //focus is object created in d3 of a node <g class="focus">
}