下拉' ul' '利'在追加值后获取最后一个值

时间:2015-06-08 16:30:53

标签: javascript jquery

我在追加值后获取最后一个值时遇到问题。

示例:

alert($('#ulscroller li:last-child').last().val());
$('#ulscroller li:last-child').append('<li value="21">21</li><li value="22">22</li><li value="23">23</li>');
alert($('#ulscroller li').last().val());
$('#ulscroller li:last-child').append('<li value="24">24</li><li value="25">25</li><li value="26">26</li>');
alert($('#ulscroller li').last().val());

提示结果:

20
23
25

问题在于结果。两次24,25,26。

Ckeck这个小提琴:http://jsfiddle.net/f5v6R/171/

任何人都知道如何解决它?

谢谢。

1 个答案:

答案 0 :(得分:1)

只是为了扩展您的问题:

你刚开始这样:

<ul id="ulscroller">
    <li value="1" class="selected">1</li>
    <li value="2">2</li>
    ...
    <li value="19">19</li>
    <li value="20">20</li>
</ul>

并且您想要添加一些额外的<li>元素来实现此目的:

<ul id="ulscroller">
    <li value="1" class="selected">1</li>
    <li value="2">2</li>
    ...
    <li value="19">19</li>
    <li value="20">20</li>
    <li value="21">21</li>
    <li value="22">22</li>
    <li value="23">23</li>
    <li value="24">24</li>
    <li value="25">25</li>
    <li value="26">26</li>
</ul>

使用$('#ulscroller li:last-child')选择列表中的最后一个<li>,但使用.append()然后将这些新的<li>元素添加到最后<li> <ul id="ulscroller"> <li value="1" class="selected">1</li> <li value="2">2</li> ... <li value="19">19</li> <li value="20">20 <li value="21">21</li> <li value="22">22</li> <li value="23">23</li> </li> </ul> 1}},所以,在第一次追加后你最终会

$('#ulscroller li:last-child')

现在使用<li>将最终选择两个不同的<li value="20">20 <li value="21">21</li> <li value="22">22</li> <li value="23">23</li> </li> 元素:

<li value="23">23</li>

append

然后,第二个<li>会将新的.after()元素插入到两个中,导致重复24 25 26.使用.append()代替<li><li>添加到与其他$('#ulscroller li:last-child')相同的级别,因此只有一个列表,而$('#ulscroller').append只返回一个选定的元素。 @Tamil Selvan的评论会在这种情况下给出相同的结果,因为<ul>总会在nm

的末尾添加新元素