我有一些动态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
。
有没有可能从收到此类的元素中返回最后一个类?
答案 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()
。