我编写了一个插件,该插件从节点获取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">
}

07-24 09:44
查看更多