我有一种明显的感觉,我正在以错误的方式解决这个问题。
我拥有的是一个超链接列表,每个超链接在单击时都会经过一个短序列并处于不同的状态,如果再次单击它们,则会恢复到原始状态。
var favourites = function(action, trgt){
var state = 0
$(trgt).on(action, function(e){
if(state === 0){
state = 1;
thistrgt = $(e.currentTarget);
thistrgt.css('opacity', '0.6');
thistrgt.removeClass('favourites');
thistrgt.addClass('favouriteschangestate');
thistrgt.text('Saving to favourites');
setTimeout(function(){
thistrgt.css('opacity', '1');
thistrgt.text('Saved!');
setTimeout(function(){
thistrgt.text('Remove from favourites');
},2000);
}, 2000);
}else if(state === 1){
state = 0;
thistrgt = $(e.currentTarget);
thistrgt.css('opacity', '0.6');
thistrgt.removeClass('favouriteschangestate');
thistrgt.addClass('favourites');
thistrgt.text('Removing from favourites');
setTimeout(function(){
thistrgt.css('opacity', '1');
thistrgt.text('Removed!');
setTimeout(function(){
thistrgt.text('Add from favourites');
},2000);
}, 2000);
}
return false;
});
}
// fire
favourites('click', '.favourites');
第二种状态是尝试将点击恢复到其原始状态。
目前,每个链接都单独触发,但存在许多问题;第一个是 if 语句失败并且墨水再次触发相同的位。第二个是如果我连续触发链接太快,它们会断开并锁定。
这是一个jsFiddle
谢谢