使用JQuery删除列表项

时间:2013-06-20 11:59:05

标签: javascript jquery

我的div包含无序列表。该列表可以包含任意数量的列表项。

div的高度为200px

我想删除超过200px的额外列表项。

<div style="height:200px;">
<ul>
 <li>value1</li>
 <li>value2</li>
 <li>value3</li>
 <li>value4</li>
 <li>value5</li>
 <li>value6</li>
 ...
 ...
</ul>
</div>

6 个答案:

答案 0 :(得分:4)

http://jsfiddle.net/xabUj/3/

$(function () {
    if ($('ul').height() > 200) 
        for(var i = $('ul li').length;i>0;i--)
            if($('ul').height() > 200)
                $('ul li').eq(i).remove();
            else break;

});

答案 1 :(得分:2)

你可以这样做:

while($("ul").height() > 200)
{
    $("ul").remove($("ul li:last-child"));
}

编辑:

确保列表中的溢出设置为自动,否则可能无法报告正确的高度。

e.g。在css:

ul {
   overflow:auto;
}

答案 2 :(得分:1)

var counter = 0;
$("ul li").each(function() {
    $this = $(this);
    counter += $this.height();
    if(counter > 200) $this.remove();
});

答案 3 :(得分:1)

<强> Working jsFiddle Demo

只需将overflow: hidden添加到您的div元素中,它就不会真正删除您的元素,但会隐藏它们。

<div style="height:200px; overflow: hidden;">

答案 4 :(得分:1)

尝试

var $div = $('div'), $ul = $div.find('ul');

$.each($ul.find('li').get().reverse(), function(){
    if($ul.outerHeight(true) > $div.innerHeight()){
        $(this).remove();
    } else {
        return false;
    }
});

演示:Fiddle

答案 5 :(得分:1)

试试这个:

http://jsfiddle.net/AjqU9/3/

 <div style="height: 200px;position:absolute;">
        <ul>
            <li id="Li1">value1</li>
            <li id="Li2">value1</li>
            <li id="Li3">value1</li>
            <li id="Li4">value1</li>
            <li id="Li5">value1</li>
            <li id="Li6">value1</li>
            <li id="Li7">value1</li>
            <li id="Li8">value1</li>
            <li id="Li9">value1</li>
            <li id="Li10">value1</li>
            <li id="Li11">value1</li>
            <li id="Li12">value1</li>
            <li id="Li13">value1</li>
            <li id="Li14">value1</li>
            <li id="Li15">value1</li>
            <li id="Li16">value1</li>
            <li id="Li17">value1</li>
            <li id="Li18">value1</li>
            <li id="Li19">value1</li>
            <li id="Li20">value1</li>
            <li id="Li21">value1</li>
            <li id="Li22">value1</li>
            <li id="Li23">value1</li>
            <li id="Li24">value1</li>
            <li id="Li25">value1</li>
            <li id="Li26">value1</li>
        </ul>
    </div>

<script type="text/javascript">
    $('div li').each(function () {
        var thi_li = $(this);

        if (thi_li.position().top >= 200)//li that after 200px heigth
        { thi_li.remove(); }
    })
</script>