如何使用 jQuery 选中的文本作为变量?

How to use jQuery selected text as variable?

我有一堆数组,例如:

var myArrayName  = [1, 2, 3, 4, 5, 6];
var myArrayName2 = [1, 2, 3, 4, 5, 6];
var myArrayName3 = [1, 2, 3, 4, 5, 6];

在我的 DOM 中,我有 data-name="myArrayName" data-push="7"data-name="myArrayName2" data-push="2" 等元素

我想 select 所有具有 data-name 的元素,然后将 data-push 值推送给它们,所以:

$("*[data-name]").each(function(){
  var arName = $(this).data("name");
  var toPush = $(this).data("push");

  // how do I make the stuff below work?
  // arName.push(toPush);
})

这将 select 具有属性 data-name

的所有元素
var arrDataAttr = new Array();
var arrDataPush = new Array();
$(document).find("[data-attr]").each(function()
{
    arrDataAttr.push($(this).attr("data-attr"));
    arrDataPush.push($(this).attr("data-push"));

});

您需要使用一个对象(字典、地图,无论您怎么称呼它):

var arrays = {
  'myArrayName': [],
  'myArrayName2':[],
  'myArrayName3':[]
}
$("*[data-name]").each(function(){
  var arName = $(this).data("name");
  var toPush = $(this).data("push");
  arrays[arName].push(toPush);
})

一个简单的方法是将所有数组包装在一个对象下以命名它们:

var arrays = {
  myArrayName: [1, 2, 3, 4, 5, 6];
  myArrayName2: [1, 2, 3, 4, 5, 6];
  myArrayName3: [1, 2, 3, 4, 5, 6];
};

然后,您可以通过名称访问数组,如下所示:

// to access the first array:
arrays["myArrayName"];

最终代码如下所示:

$("[data-name]").each(function(){
  var $item = $(this);
  var arName = $item.data("name");
  var toPush = $item.data("push");

  arrays[arName].push(toPush);
});

备注:

  • 请注意,我正在缓存 $(this) 变量,如果您想知道原因,请查看 this

  • 如果您想了解有关使用 JavaScript 访问对象属性的更多信息,请查看 this

尝试调整数组变量的名称,data-* 属性,使用对数组调用的 $.each(),select 元素 data-name 以当前 index 结束循环

var myArrayName0 = [1, 2, 3, 4, 5, 6];
var myArrayName1 = [1, 2, 3, 4, 5, 6];
var myArrayName2 = [1, 2, 3, 4, 5, 6];

$.each([myArrayName0, myArrayName1, myArrayName2], function(index, arr) {
  arr.push($("[data-name$=" + index + "]").data("push"))
});

console.log(myArrayName0, myArrayName1, myArrayName2);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<div data-name="myArrayName0" data-push="7"></div>
<div data-name="myArrayName1" data-push="2"></div>
<div data-name="myArrayName2" data-push="1"></div>