0

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

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

我以前用过这个:

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

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

4

2 回答 2

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)
});

演示:小提琴

于 2013-08-12T06:44:14.607 回答
0

我不建议将包含点的类的名称保存在该数组()中,如果您以后需要它来做其他事情,它将无用。
(或者你需要再次拆分它)

相反,我建议像您现在一样保存它,并且仅在您需要时将点添加到该值

喜欢:

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);
于 2013-08-12T06:59:15.230 回答