2010-03-14 86 views
0

我爲使用該代碼的非動畫列表...無法申請jQuery的過濾器

function unanimate_li() { 
    $li.filter(':last') 
    .animate({ 
     height: 'hide', 
     opacity: 'hide' 
    }, 1000, function() { 
     unanimate_li(); 
    }); 
    $li = $li.not(':last'); 
} 

我已經使用這個代碼

$li = $("ol#update > li"); 
$li = $li.filter(':gt(4)').filter(':lt('+ size + ')'); 

現在,當我嘗試做組建禮這個我不能讓5號李(基於零4)刪除 它消除了第六李 的例子here

而當我第二次做此更新,接着無限循環

我不明白爲什麼

回答

1

我不太知道你正試圖在這裏做。當你調用animateunanimate函數時,你的回調會再次調用同樣的函數,看起來應該會創建一個無限循環。

另外,我注意到您的unanimate函數使用了$li,它在腳本中多次更新。這對我最終所包含的內容變得非常困惑。所以我修改了這個函數來抓取當前的li標籤並從那裏開始工作。

我注意到另一件事是,你正在使用:last找到最後li,我相信也抓住了隱藏li的,所以要麼刪除隱藏的人或使用:visible

嘗試這些功能:

function animate_li(){ 
$("ol#update > li:first") 
    .animate({ 
    height: 'show', 
    opacity: 'show' 
    }, 5 
); 
} 

function unanimate_li(){ 
$("ol#update > li:visible:last") 
    .animate({ 
    height: 'hide', 
    opacity: 'hide' 
    }, 1000, function(){ 
    // $(this).remove(); // uncomment this line if you want to remove the li 
    }); 
} 
+0

感謝您的看得見的部分... 這絕對有效,但我必須刪除最後n個消息和參數化unanimate_li函數的多用途... 請回復...謝謝... – 2010-03-14 18:58:33

+0

有你嘗試傳遞'$ li'的值作爲參數? '函數unanimate_li($ li){...}'或者只是傳遞要移除的元素數目,就像'unanimate_li(4)'然後在函數中使用'function unanimate_li(num){$('ol#update> li :visible:gt('+ num +')')...}' – Mottie 2010-03-14 19:40:58

+0

我已更新鏈接... http://pradyut.dyndns.org/WebApplicationSecurity/divcomment.jsp 在第一次更新它工作正常。 。第二次更新它不......你可以請檢查與螢火蟲,並糾正... – 2010-03-14 21:14:51