创建一个数组而不是使用jQuery从dom中获取的值的变量?

时间:2016-03-02 12:23:03

标签: javascript jquery html

我正在寻找一类“某类”的元素。在具有特定ID的元素内(由变量myID提供)。

对于其中的每一个,我需要获取名为' data-att'的数据属性的值。 然后我想创建一个这样的数组,但是将字符串custom-class--添加到每个字符串的开头。

我的代码有效,只是它只生成 1值。如何创建数组而不是变量?

// a in the ID of the container to search in for elements with a class of 'some-class'
var myID = '#' + myID;

// Create a varialbe which starts 'custom-class--' and then has the data-att attribute
// of elements for elemts with a class of 'some-class'
var class = 'custom-class--' + $(myID).find('.some-class').attr('data-att');

更新 - 这是一个有效的代码:http://codepen.io/anon/pen/reVeja?editors=1111

<a href="#" class="some-class" data-att="data-1">Link</a>

<div id="my-id">
  <a href="#" class="some-class" data-att="data-2">Link</a>
  <a href="#" class="some-class" data-att="data-3">Link</a>
</div>

<script type="text/javascript">

$(function() {

  // a in the ID of the container to search in for elemnts with a class of 'some-class'
  var myID = '#' + 'my-id';

  // Create a variable which starts 'custom-class--' and then has the data-att attribute 
  // of elements for elements with a class of 'some-class'
  var myClass = 'custom-class--' + $(myID).find('.some-class').attr('data-att');

  console.log(myClass);

});
</script>

2 个答案:

答案 0 :(得分:4)

您可以尝试这样的事情:

var myID = '#' + myID;
var elemClass=[];

$(myID).find('.some-class').each(function(){
   if($(this).attr('data-att').length){ 

      elemClass.push('custom-class--'+ $(this).attr('data-att')) ;
   }

});

请注意,您无法在代码中使用reserved words class

答案 1 :(得分:1)

您可以使用map()循环遍历元素并自动创建一个新数组,其中包含您从地图回调中返回的值。在回调中,我使用data()来获取data-att

的值
var parentId = '#PARENTID',
    clNames = $.map( $(parentId).find('.some-class'), function( i,el ){
        return 'custom-class--'+ $(el).data('att');
    });

但请注意,即使您在元素上没有data-att属性,也会返回一个值。如果您的案例没有data-att,您最终会得到custom-class--undefined。这不是一个真正的问题,您甚至可以将其用作默认样式。