polymer slideToggle() 函数到达,但没有结果

polymer slideToggle() function is reached, but no result

在这里,我展示了我的问题的简化版本。 jQuery(3.2.1) slideToggle() 函数在我的例子中根本不会向上或向下滑动。但是,控制台确实在点击事件中的 slideToggle() 函数上方打印了一行,表示触发了点击事件。该函数位于 Polymer 元素内 class.

console.log('triggered');

确实打印到控制台。

代码:

<link rel="import" href="../../bower_components/polymer/polymer-element.html">

<dom-module id="cm-body">
 <template>

  <div id="container">
    <div on-click="performSlideToggle" >test</div>
    <p>blabla test</p>
  </div>
 </template>
 <script>

 /**
  * @customElement
  * @polymer
  */
 class CmBody extends Polymer.Element {
   static get is() { return 'cm-body'; }

   performSlideToggle() {
     console.log('triggered');
     $('p').slideToggle();
   }
 }

 window.customElements.define(CmBody.is, CmBody);
 </script>
</dom-module>

感谢您的帮助!

您正在使用 polymer2。默认情况下,这使用 shadowDOM。不幸的是 jQuery 无法访问 shadowDOM 中的元素。您可以向要滑动的特定元素添加一个 id,然后使用聚合物 select 它。

<link rel="import" href="../../bower_components/polymer/polymer-element.html">

<dom-module id="cm-body">
 <template>

  <div id="container">
    <div on-click="performSlideToggle" >test</div>
    <p id="slide_able">blabla test</p>
  </div>
 </template>
 <script>

 /**
  * @customElement
  * @polymer
  */
 class CmBody extends Polymer.Element {
   static get is() { return 'cm-body'; }

   performSlideToggle() {
     console.log('triggered');
     $(this.$.slide_able).slideToggle();
   }
 }

 window.customElements.define(CmBody.is, CmBody);
 </script>
</dom-module>