如何用jquery将最后一个类赋给其他元素?

时间:2012-08-27 11:17:00

标签: javascript jquery class callback

我有一些动态ID更改的列表元素。接下来,我将这个id作为一个一个一个的类给予其他元素。所以,这是我的代码:

$('#rounded_items li').one({click: function(){
    $('#back_button').addClass(this.id);
}});

#back_button#rounded_items li接收第1,2,3,4类。如何从back_button抓取最后一个课程,并通过点击将其提交给#rounded_items

有没有可能从收到此类的元素中返回最后一个类?

3 个答案:

答案 0 :(得分:1)

也许您可以将其存储为数据

$('#rounded_items li').one('click', function(){
    var classes = $('#back_button').attr('class').split(/\s+/);
    var last = classes[classes.length-1];
    $.data($('#back_button')[0],'lastclass',last);
    $('#back_button').addClass(this.id);
});

$('#back_button').click(function(){
    var lastclass = $.data($('#back_button')[0],'lastclass');
    $('#rounded_items').addClass(lastclass);
    var classes = $('#back_button').attr('class').split(/\s+/);
    $.data($('#back_button')[0],'lastclass',classes[classes.length-3]);
    $('#back_button').removeClass(classes[classes.length-1]);
});

你也可以试试这个:

   $('#back_button').click(function(){
        var classes = $('#back_button').attr('class').split(/\s+/);
        $('#rounded_items').addClass(classes[classes.length-2]);
        $('#back_button').removeClass(classes[classes.length-1]);
    });

答案 1 :(得分:0)

使用数组存储id,而不是类属性!

var stack = [];
$('#rounded_items li').one('click',function(){
    stack.push(this.id);
});
$('#back_button').click(function(){
    $('#rounded_items').setClass(stack.pop());
});

答案 2 :(得分:0)

我假设您的类并非真正用于设置任何样式,因为它们不是合法的CSS标识符。如果意图只是存储某个州,请使用.data

var $back = $('#back_button');

$back.data('state', []);                   // empty array to store state

$('#rounded_items li').one({click: function() {
    $back.data('state').push(this);        // store clicked element
});

$back.on('click', function() {
    var elem = $back.date('state').pop();  // retrieve last clicked element
    if (elem) {
        // do something with elem...
    }
});

如果代码全部在相同的词法范围内,您可以使用本地数组来存储状态而不使用.data()