当无法使用$(this)时定位单个元素

时间:2013-10-09 05:11:44

标签: javascript jquery

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

我希望列表(<li>)可以预先添加并逐渐淡出,遗憾的是我无法使用$(this),上面的代码效果不好,它适用影响所有<li>

3 个答案:

答案 0 :(得分:1)

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

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

http://jsfiddle.net/5yj7v/

答案 1 :(得分:0)

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);
                            }
                        });
}

答案 2 :(得分:0)

据我了解你想要在所有礼品上一个接一个地淡出效果。如果这是正确的,请尝试以下方法:

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/