将其推送到数组onClick

时间:2019-08-31 17:37:23

标签: javascript jquery arrays

当我执行onClick事件时,我正在尝试将数据推入数组。

function clickCard() {
    $(document).on('click', '.card', function() {
        $(this).addClass('visible');

        var cardValue = $(this).attr('src');
        matchOrNot.push(cardValue);

    })
}

我正在尝试将图像的src放入数组中,它必须是我单击的特定图像(this)。希望有道理。

尝试此操作时,我得到变量“ matchOrNot”的“未定义”。

如果我使用符号[0]作为目标选择器,但我想获取它,则此功能有效。

有任何想法吗?

3 个答案:

答案 0 :(得分:1)

像这样吗?

var A = []

  $('.card').on('click', e => {
      let $this = $(e.currentTarget)
      $this.addClass('visible')
      let cardValue = $this.attr('src');
      A.push(cardValue);
      
      console.log(A)
  })
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<img class="card" src="https://dummyimage.com/100x100/000/fff" />
<img class="card" src="https://dummyimage.com/100x100/fff/000" />

更新

看到您的代码后,我遇到了问题。不是matchOrNot未定义,而是src属性,因为您当前的目标不是图像而是外部div。您需要先找到图像:

$this.find('img').attr('src')

答案 1 :(得分:0)

使用$(this)时,您尝试使用类.card访问对象src,最快的解决方案是使用$('#id')获取图像src。

答案 2 :(得分:0)

当DOM准备好进行交互时,给定的click事件(即,类为'card'的元素上的click事件应该被注册,并且该事件的位置是$(document).ready()方法)。
请在准备事件中包装$(document).on
这应该可以解决问题。