我编写了一个插件,该插件从节点获取data属性并进行一些工作,
问题:首次加载页面时,它可以正常工作。但是当页面加载后,我将数据属性“ data-range”更改为其他值,然后当我单击按钮时,它显示的是旧值而不是更新的值。
在这里,我如何访问插件中的属性。
var svgThis = this.$element.parent().parent().parent().find('svg').attr('id');
var dataRangeString = $("#"+svgThis).find(".focus").data("range");
但即使“ .focus”数据范围也发生了变化,我尝试打印新的datarangeString,它向我显示了页面首次加载时显示的旧值。
我被困住了,这对我来说非常重要。
任何想法如何解决此问题。
细节 :-
我有一个用于创建图表的插件,因为在缩放图表时我更改了data属性。
例如。加载第一个图表时,数据范围是1jan1015至8aug2015
将缩放数据范围更新为4april2015至8june2015之后
我有一个插件可以导出chart.so的数据,所以第一次页面加载时我得到了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");
}
最佳答案
更新资料
实际上是要设置数据属性,您不想使用.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">
}