Javascript 高图+;xAxis标签格式化程序
我在highcharts JS中的xAxis.labels.formatter函数中遇到了一个奇怪而奇妙的问题 我想在图表的xAxis标签上添加一个灯箱图标,如下所示:Javascript 高图+;xAxis标签格式化程序,javascript,jquery,highcharts,Javascript,Jquery,Highcharts,我在highcharts JS中的xAxis.labels.formatter函数中遇到了一个奇怪而奇妙的问题 我想在图表的xAxis标签上添加一个灯箱图标,如下所示: return '<div class="label">' +'<a class="lightbox" href="http://www.google.com" data-lightbox="iframe" data-plugin-options=\'{"type":"iframe"}\'>
return '<div class="label">'
+'<a class="lightbox" href="http://www.google.com" data-lightbox="iframe" data-plugin-options=\'{"type":"iframe"}\'>ICON</a>'
+'</div>';
而不是
data-plugin-options='{"type":"iframe"}'
不管我怎么做,我似乎都无法阻止这一切的发生
我尝试过的事情:
谢谢大家您需要正确转义进入
数据插件选项
属性的字符串。更多信息:
格式化程序:函数(){
函数escapeAttr(str){
var div=document.createElement('div');
div.setAttribute('data-dummy',str);
return/\“(.*)\”/.exec(div.outerHTML)[1];
}
var options={type:'iframe'},
optionsAttr=escapeAttr(JSON.stringify(options));
返回“”
+ ''
+ '';
},
您还可以使用内置方法,而不是我们自制的
escapeAttr()
,但无论谁以后读取该属性,都需要首先读取该值才能获得有效的JSON。嗨,Spinxxx,我已经尝试了您的解决方案,并用我的发现更新了我的问题,谢谢您的帮助您无法更改该行为-这就是正确的HTML编写方式。如果lightbox不起作用,请将该库添加到JSFIDLE to inv中进一步估计。
data-plugin-options="{"type":"iframe"}"
data-plugin-options='{"type":"iframe"}'
formatter: function () {
function escapeAttr(str) {
var div = document.createElement('div');
div.setAttribute('data-dummy', str);
return /\"(.*)\"/.exec(div.outerHTML)[1];
}
var options = { type: 'iframe'},
optionsAttr = escapeAttr(JSON.stringify(options));
return '<div class="label">'
+ '<a class="lightbox" href="http://www.google.com" data-lightbox="iframe" data-plugin-options="' + optionsAttr + '">ICON</a>'
+ '</div>';
},