我正在寻找一类“某类”的元素。在具有特定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>
答案 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
。这不是一个真正的问题,您甚至可以将其用作默认样式。