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

时间:2015-11-06 18:15:29

标签: javascript jquery arrays push

我有一堆数组,例如:

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"等元素。

我想选择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);
})

4 个答案:

答案 0 :(得分:1)

这将选择具有属性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"));

});

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

执行此操作的简单方法是将所有数组包装在对象下以命名它们:

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

答案 3 :(得分:1)

尝试调整数组变量的名称,data-*属性,使用调用数组的$.each(),选择以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>
&#13;
&#13;
&#13;