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

Javascript 如何使用jquery将最后一个类赋予其他元素?,javascript,jquery,class,callback,Javascript,Jquery,Class,Callback,我有一些id动态变化的列表元素。接下来,我将这个id作为一个类逐个提供给另一个元素。这是我的代码: $('#rounded_items li').one({click: function(){ $('#back_button').addClass(this.id); }}); 而#后退(back)按钮从#取整(rounded)项li接收类1、2、3、4。如何从back_按钮中获取最后一个类,并通过单击将其交给#rounded_项 是否有可能从接收该类的元素返回最后一个类 也许您可以将其

我有一些id动态变化的列表元素。接下来,我将这个id作为一个类逐个提供给另一个元素。这是我的代码:

$('#rounded_items li').one({click: function(){
    $('#back_button').addClass(this.id);
}});
#后退(back)按钮
#取整(rounded)项li
接收类1、2、3、4。如何从
back_按钮
中获取最后一个类,并通过单击将其交给
#rounded_项


是否有可能从接收该类的元素返回最后一个类

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

$('#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]);
    });

使用数组来存储ID,而不是类属性

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

我假设您的类并没有真正被用来设计任何样式,因为它们不是合法的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()

您所说的“从
#back_按钮
抓取最后一个类”是什么意思?@Bergi嗯,我想是添加到按钮的最后一个类。。。问题是,“通过单击将其分配给#取整的#项”是什么意思。列表元素的id通过ajax进行了动态更改,我将它们作为类分配给某种链中的#后退#按钮:1,2,3,4。如何抓取最后一个类并将其交给其他元素,在这种情况下#rounded_ItemsMembers不是合法的CSS类…@ukaszBorawski你到底想做什么?这些类是否确实改变了视觉外观,或者您只是使用
字段作为临时数据存储?我需要在单击“后退”按钮后提供此类我非常确定您不应该使用类名存储这些值-更新的回答它的工作,但舍入的\u项接收此类的所有内容,而不是最后一个:(替换
$(“#舍入的\u项”).addClass(lastclass)
$(“#四舍五入项目li#”+lastclass)。addClass(lastclass)
@Gustonez它会将类添加到id与
lastclass
相同的
li
,但是OP想将类添加到
#rounded_items
@ukaszBorawski,当你说不能重复它时,你是什么意思???也许你需要从backbutton
$(“#back button#u button”)中删除类。removeClass(类)[classes.length-1]
?我以为他想切换该类。但似乎每次单击“后退”按钮时,他都想将上一个类一直往后退!