简体   繁体   English

如何使用jquery获取对象中元素的数据属性?

[英]How to get data attribute of elements in object using jquery?

I have a loop of buttons which is compiling like this 我有一个按钮循环,这样编译

<button class="add-line btn btn-info btn-sm" id="cat1" data-cat="[1,2,3,4,5,6,7]">cat1</button>
<button class="add-line btn btn-info btn-sm" id="cat2" data-cat="[8,9]">cat2</button>
<button class="add-line btn btn-info btn-sm" id="cat3" data-cat="[10,11]">cat3</button>

In Jquery I am geeting the data as this 在Jquery中,我正在为这些数据进行调整

let cat1 = $('#cat1').data('cat');
let cat2 = $('#cat2').data('cat');
let cat3 = $('#cat3').data('cat');

but this is hard coding as I know that there are these 3 ids. 但这很难编码,因为我知道有这3个ID。 I want to create an object and make this thing dynamically. 我想创建一个对象并动态地创建这个东西。 How to do that? 怎么做?

Create an object and then loop through elements using .each() and in loop add value of data-cat to object. 创建一个对象,然后使用.each()循环遍历元素,并在循环中将data-cat值添加到object。

 var cats = {}; $("#cat1, #cat2, #cat3").each(function(){ cats[this.id] = $(this).data("cat"); }); console.log(cats); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button class="add-line btn btn-info btn-sm" id="cat1" data-cat="[1,2,3,4,5,6,7]">cat1</button> <button class="add-line btn btn-info btn-sm" id="cat2" data-cat="[8,9]">cat2</button> <button class="add-line btn btn-info btn-sm" id="cat3" data-cat="[10,11]">cat3</button> 

Identify them by some class, I have used attribute selector for now 通过某些类识别它们,我现在使用了属性选择器

let arr = [];
jQuery("[data-cat]").each(function(){
  var $elt = jQuery(this);
  arr.push($elt.data(cat));//Or any other operation to be performed
})

If I get you correctly, you are trying to put them in an object. 如果我找对你,你试图将它们放在一个物体中。 Assuming you know the number of buttons, this would do the job: 假设您知道按钮的数量,这将完成工作:

 var buttons = {}; var btncount = 3; // This is the number of buttons for(var i = 1; i <= btncount; i++) { buttons["cat" + i] = $("#cat" + i).data("cat"); } console.log(buttons); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button class="add-line btn btn-info btn-sm" id="cat1" data-cat="[1,2,3,4,5,6,7]">cat1</button> <button class="add-line btn btn-info btn-sm" id="cat2" data-cat="[8,9]">cat2</button> <button class="add-line btn btn-info btn-sm" id="cat3" data-cat="[10,11]">cat3</button> 

Assuming you don't know how many buttons are there, and all buttons have the add-line , btn , btn-info and btn-sm classes, you can do this: 假设你不知道有多少个按钮,并且所有按钮都有add-linebtnbtn-infobtn-sm类,你可以这样做:

 var buttons = {}; var btncount = $(".add-line.btn.btn-info.btn-sm").length; // This is the number of buttons for(var i = 1; i <= btncount; i++) { buttons["cat" + i] = $("#cat" + i).data("cat"); } console.log(buttons); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button class="add-line btn btn-info btn-sm" id="cat1" data-cat="[1,2,3,4,5,6,7]">cat1</button> <button class="add-line btn btn-info btn-sm" id="cat2" data-cat="[8,9]">cat2</button> <button class="add-line btn btn-info btn-sm" id="cat3" data-cat="[10,11]">cat3</button> 

Add one new class in all button dev_class. 在所有按钮dev_class中添加一个新类。 And try below code. 并尝试下面的代码。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="add-line btn btn-info btn-sm dev_class" id="cat1" data-cat="[1,2,3,4,5,6,7]">cat1</button>
<button class="add-line btn btn-info btn-sm dev_class" id="cat2" data-cat="[8,9]">cat2</button>
<button class="add-line btn btn-info btn-sm dev_class" id="cat3" data-cat="[10,11]">cat3</button>


// Gets the number of elements with class dev_class
var numItems = $('.dev_class').length;
var vars = {};
var newCount = 0;
$('.dev_class').each(function(){
    newCount++;
  vars['cat' + newCount] =  $('#cat'+newCount).data('cat');
});
console.log(vars);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM