我有一组聚合物纸张切换按钮,可以使图形中的元素(使用c3)显示和消失。我使用以下代码获得了一些成功的事件:
HTML:
<div class="graph-sets-element">
<core-label horizontal layout>
<paper-toggle-button checked id="graph1"></paper-toggle-button>
<h4>Graph 1</h4>
</core-label>
</div>
<div class="graph-sets-element">
<core-label horizontal layout>
<paper-toggle-button checked id="graph2"></paper-toggle-button>
<h4>Graph 2</h4>
</core-label>
</div>
使用Javascript:
[].forEach.call(
document.querySelectorAll('paper-toggle-button'),
function(toggle){
toggle.addEventListener('change',function() {
if(this.checked) {
chart.show('graph1');
}
else {
chart.hide('graph1');
}
});
}
);
我当前的方法的问题是,任何按下纸张切换按钮都会做同样的事情(隐藏/显示绘制的图形1行)。有没有办法获取按下的纸张切换按钮的ID并将其传递给chart.show()
部分挑战是,当用户将新数据上传到图表中时,会动态创建这些切换按钮。这意味着在按下纸张切换按钮之前我不一定知道他们的名字,并且不能对每个人的ID进行硬编码。
答案 0 :(得分:3)
您可以使用以下方式访问来电元素ID:
this.id
答案 1 :(得分:1)
我不得不做一些接近这一段时间的事情也许我使用的方法会帮助你。
在您点击的元素上(在我的情况下是一个纸质项目)分配一个随机属性名称(我使用数据),以便我的元素看起来像。
<paper-toggle-button on-change="{{doFunction}}" id="{{id}}"></paper-toggle-button>
然后在我的功能中我确保将发送者发送给它。看起来像
doFunction: function (event, detail, sender) {
var id = sender.attributes.id.value;
// do something with the id
}
使用事件监听器有点差异但相似。它看起来像这样
toggle.addEventListener('change', function (event) {
var id = event.path[0].id;
// do something with id
});
希望有所帮助。