我有一个jquery脚本,它为每个字母获取一个字符串并生成li
元素,我有一个for循环用于选择从last到first的每个字母,并希望从这些li
中删除一个类通过使用.eq()
选择它们来进行for循环,但它只影响最后一个元素而其他元素类不会删除。
我的代码是:
var str = this.html(),
container = this;
container.after('<ul class="letters-wrapper"></ul>').hide();
for(var i=0; i<str.length;i++){
$('.letters-wrapper').append('<li class="each-letter dropIn stay-up">'+ str[i] +'</li>');
if(str[i] == " "){
$('.letters-wrapper').append('<li class="each-letter dropIn stay-up">'+ ' ' +'</li>');
}
}
for(var i = $('.each-letter').length-1; i>=0; i--){
var j = ($('.each-letter').length-1) - i;
setTimeout(function() {
$('.each-letter.dropIn').eq(i).removeClass('stay-up');
}, j*100);
}
}
答案 0 :(得分:0)
要使用setTimeout
进行此操作,请尝试以下代码:JSFIDDLE
var str = this.html(),
container = this;
container.after('<ul class="letters-wrapper"></ul>').hide();
for(var i=0; i<str.length;i++){
$('.letters-wrapper').append('<li class="each-letter dropIn stay-up">'+ str[i] +'</li>');
if(str[i] == " "){
$('.letters-wrapper').append('<li class="each-letter dropIn stay-up">'+ ' ' +'</li>');
}
}
for(var i = $('.each-letter').length-1; i>=0; i--){
var j = ($('.each-letter').length-1) - i;
doSetTimeout(i);
}
function doSetTimeout(i) {
var j = ($('.each-letter').length-1) - i;
setTimeout(function() {
$('.each-letter.dropIn:eq('+i+')').removeClass('stay-up');
}, j*200);
}
答案 1 :(得分:0)
我找到了一种方法来为我的代码使用set timeout:
$('.each-letter').each(function(i){
var j = $('.each-letter').length - i;
setTimeout(function() {
$('.each-letter.dropIn').eq(j).removeClass('stay-top');
}, i*100);
});
答案 2 :(得分:-1)
答案 3 :(得分:-3)
检查jquery冲突。如果它不在现场工作,那将是问题。用jQuery替换$并检查