如何访问Jquery中动态创建的元素

时间:2019-09-10 09:40:42

标签: javascript jquery

在HTML结构中,我具有样式为内联块的项目列表,并且由于无法直接从drupal8添加id,因此我使用JQuery用<marquee> </marquee>标签包装该列表视图。

我想做的是我有左右两个按钮,当我单击相应的按钮时,选框应改变其移动方向。

由于它是动态创建的元素,因此我无法使用jquery访问该元素,因此出现错误“未定义”。

当我单击左右按钮时,出现以下错误

  

marquee.start不是函数

var $j = jQuery;

$j(".item-list > ul").wrap("<marquee class='scrollermarquee'></marquee>");

$j('.view-header').on('click', function() {
  var marquee = $j('.scrollermarquee').addClass('mia');
  marquee.stop();
  marquee.direction = 'left';
  marquee.start();
})

$j('.view-footer').on('click', function() {
  var marquee = $j('.scrollermarquee').addClass('mia');
  marquee.stop();
  marquee.direction = 'right';
  marquee.start();
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="view view-ticker view-id-ticker view-display-id-block_1 js-view-dom-id-95599754f8c1606496d24cbc4e81ab801ba6c7756348defe6e876248e992d5e0">
  <div class="view-header">
    <p><span class="leftbutton">&lt;</span></p>
  </div>
  <div class="view-content">
    <div class="item-list">
      <marquee class="scrollermarquee mia">
        <ul>
          <li>
            <div class="views-field views-field-title"><span class="field-content"><a href="/node/805" hreflang="en">test-report-3</a></span></div>
          </li>
          <li>
            <div class="views-field views-field-title"><span class="field-content"><a href="/node/801" hreflang="en">test-report-1</a></span></div>
          </li>
          <li>
            <div class="views-field views-field-title"><span class="field-content"><a href="/node/470" hreflang="en">test-report-2</a></span></div>
          </li>
        </ul>
      </marquee>
    </div>
  </div>
  <div class="view-footer">
    <p><span class="rightbutton">&gt;</span></p>
  </div>
</div>

1 个答案:

答案 0 :(得分:1)

尝试一下: 您正在使用jquery类选择器选择marquee元素,并向其添加类,该类不会返回marque元素,因此不会获得未定义的值。

首先获取元素,然后添加类,请参见下文

$j('.view-header').on('click', function() {
  var marquee = $j('.scrollermarquee');
  marquee.addClass('mia');
  marquee[0].stop();
  marquee[0].direction = 'left';
  marquee[0].start();
})

$j('.view-footer').on('click', function() {
  var marquee = $j('.scrollermarquee');
  marquee.addClass('mia');
  marquee[0].stop();
  marquee[0].direction = 'right';
  marquee[0].start();
})