javascript - Polymer 检查元素是否打开并将 css 类分配给父级

标签 javascript polymer

我有一个名为 <collapse-item> 的 polymer 元素,当它打开时,会获得一个属性 opened 。 ( collapse-item 基于 iron-collapse )但是我如何用 JS 检查此元素是否打开,然后将另一个 css 类分配给它的父元素?

<template is="dom-repeat" items="{{booksList}}">
  <div class="parent">
    <h1>Some header</h1>
    <p>Some text</p>
    <collapse-item input-text={{item.blurb}}></collapse-item>
  </div>
</template>

我只想为 <div class="parent"> 的这个实例分配一个新的 css 类而不是页面上的所有其他人。

编辑选项 1

我更改了上面的内容以添加对打开的项目的检查并添加了一些js:

<template is="dom-repeat" items="{{booksList}}">
  <div class="parent" id="[[_toggleId]]">
    <h1>Some header</h1>
    <p>Some text</p>
    <collapse-item input-text={{item.blurb}} opened="{{opened}}"></collapse-item>
  </div>
</template>

JS:

  properties: {

  _toggleId: {
      type: String,
      computed: '_computeToggleId(opened)'
    }

  },
  _computeToggleId: function(opened) {
      return opened ? 'expandeditem' : '';
  }

这不仅为父类的一次实例创建了 id,还为 dom-repeat 中的所有实例创建了 id。 .

编辑选项 2

<template is="dom-repeat" items="{{booksList}}">
  <div class="parent" id="parentElem">
    <h1>Some header</h1>
    <p>Some text</p>
    <collapse-item input-text={{item.blurb}} opened="{{opened}}" on-tap="_computeToggleId(opened)"></collapse-item>
  </div>
</template>

JS:

  _computeToggleId: function(opened) {
    if (opened) {
      this.$.parentElem.classList.add('expandeditem');
    }

无法读取 classListundefined .

谢谢你帮助我学习。我是 Polymer 新手。

最佳答案

您可以将属性绑定(bind)到打开的属性。这是铁崩塌的例子

<iron-collapse opened={{isOpen}}>
  <div class="parent" id="parentElem">
   <div>Content goes here...</div>
  </div>
</iron-collapse>

然后您可以根据父元素的 CSS 类的更改来检查条件 if(isOpen) 是 true 还是 false。 为父元素分配 id 并添加或删除带有 id 的类名

      this.$.parentElem.classList.remove('YOUR_CSS_CLASS_NAME');
      this.$.parentElem.classList.add('YOUR_CSS_CLASS_NAME'); 

关于javascript - Polymer 检查元素是否打开并将 css 类分配给父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42994538/

相关文章:

javascript - 如何滚动到 iframe 中的特定位置?

javascript - 在权重上添加/删除 css 类

javascript - 如何检查字符串是否有星号后跟四位数字?

dart - 在ASP.NET MVC网站上使用dart Web-ui( polymer )时,需要以javascript运行的帮助

javascript - react js从单个jsx文件导入多个组件

javascript - D3 js图表倒置问题

dart - 如何在加载到页面上之前初始化 polymer 元素的国际化

javascript - 相当于 ng 重复的 polymer

android - 将人行横道添加到我的 cordova-polymer 项目中

polymer - 使用 Polymer 在同一 Web 组件的实例之间进行通信的最佳方式?