当无法使用 $(this) 时,目标单个元素


function modalClosed(){
    $("div#tab" + tabId).find('ul')
                        .prepend("<li>item</li>")
                        .hide()
                        .fadeIn('slow');
}

我希望列表(<li>(被预置并逐个淡入淡出效果,不幸的是我没有办法使用$(this),上面的代码效果不佳,它对所有<li>都应用了效果。

>这是因为.prepend()返回的是ul元素而不是追加的li元素,因此您隐藏/显示ul元素。您可以使用prependTo()方法反转逻辑,现在.hide().fadeIn()应用于追加的元素而不是ul元素。

$("<li>item</li>").hide()
                  .prependTo("#tab"+tabId+" ul")
                  .fadeIn('slow');

http://jsfiddle.net/5yj7v/

function modalClosed(num) {
     $("div#tab" + tabId).find('ul')
                        .prepend("<li>item</li>")
                        .hide()
                        .fadeIn('slow', function() {
                            // callback function, called when fadeIn has finished
                            if(num > 1) {
                                modalClosed(num - 1);
                            }
                        });
}

据我了解,您希望在所有 li 项目上一个接一个地淡入淡出效果。如果正确,请尝试以下操作:

var time=1000;
$("div#tab"+tabId+" ul").prepend("<li>item</li>");
$("div#tab"+tabId+" ul li").each(function() {
    $(this).hide();
    $(this).fadeIn(time);
    time+= 800;
});

http://jsfiddle.net/PV4dC/5/

最新更新