强制jQuery函数每次重新扫描DOM(动态元素)

时间:2016-06-24 18:17:27

标签: jquery arrays

我正在开发一个脚本,它将从页面上的动态更改元素中收集数据属性,并返回此数据以供进一步操作。

一切正常,除了我的函数只将数据写入数组一次,然后它就不会在第二次,第三次等使用时重写数组,即使元素的数据属性发生了变化。

// checkbox functionality
$(document).on('click', '.myoption', function() {
  event.target.setAttribute('data-selected', event.target.getAttribute('data-selected') === 'yes' ? 'no' : 'yes');
  $('.myoption').not(event.target).attr('data-selected', 'no');
});

// collect data-attributes of elements and return output
$(document).on('click', '.mybtn', function(e) {
  e.preventDefault();
  myData = [];
  $(".myoption").each(function() {

    var id = $(this).attr('id');
    var selec = $(this).data('selected');

    item = {}
    item[id] = selec;

    myData.push(item);
  });
  alert(JSON.stringify(myData));
});

JSFiddle:https://jsfiddle.net/AlpacaLord/9cd3w0zb/

要查看问题,请尝试选中第1个框,然后单击按钮;然后尝试检查任何其他框并单击按钮 - 您可以看到输出永远不会改变。

如何强制jQuery重新扫描DOM并在每次调用函数时重写数组?

0 个答案:

没有答案