按下一组聚合物纸张切换按钮之一时触发事件

时间:2014-12-29 00:27:20

标签: javascript jquery html polymer

我有一组聚合物纸张切换按钮,可以使图形中的元素(使用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进行硬编码。

2 个答案:

答案 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
});
希望有所帮助。