如何创建一个CSS类数组

时间:2013-08-12 06:42:18

标签: javascript jquery

如何创建CSS类数组,而不是CSS类名?我需要“。”和一切。

我需要用户能够点击某些按钮,并将按钮所属的类添加到数组中。

之前我用过这个:

var myPicks[];
$('.button').click( function() {
    var hello = " " + $(this).attr('class').split(' ')[0];
    myPicks.push(hello);
}

但是这似乎添加了类的名称,而不是类本身。我可能错了,我的JQuery代码的另一部分出了问题。

2 个答案:

答案 0 :(得分:0)

尝试

var myPicks = [];
$('.button').click( function() {
    Array.prototype.push.apply(myPicks, $.map($(this).attr('class').split(' '), function(value, idx){
        return '.' + value
    }))

    console.log('myPicks', myPicks)
});

如果您只想要唯一的课程

var myPicks = [];
$('.button').click( function() {

    $.each($(this).attr('class').split(' '), function(idx, value){
        var selector = '.' + value;
        if($.inArray(selector, myPicks) == -1){
            myPicks.push(selector)
        }
    })

    console.log('myPicks', myPicks)
});

演示:Fiddle

答案 1 :(得分:0)

我不建议保存包含在该数组中的点的类的名称(),如果稍后需要其他内容,则无用。 (或者你的goint需要再次拆分)

相反,我建议您像现在一样保存它,然后,只有当您需要时,将点添加到该值

像:

var myPicks = new Array(); 
myPicks[0] = "something";

// original value:
var newValue = myPicks[0]; // newValue == 'something'
//used as ID:
var newValue = '#' + myPicks[0]; // newValue == '#something'
// used as a class:
var newValue = '.' + myPicks[0]; // newValue == '.something'

但是,当然如果您需要这种方式......只需替换PUSH函数并将点添加到其中:

var newHello = '.' + hello;
myPicks.push(newHello);