迭代无序列表时跳过第一个列表项。 JQuery的

时间:2011-12-11 11:16:43

标签: jquery image function html-lists

我有一个无序列表,列表项包含图像链接。我的代码目前遍历列表项,获取href,在div banner-holder中创建一个新的图像容器,并添加src属性。

我想要做的是跳过第一个列表项,因为我已经在banner-holder中拥有该图像,我不想再添加它两次。

谢谢。

$('li').each(function ()
    {
        var bigImage = $(this).find('a.main-img').attr('href');

        $('<img/>').attr('src', bigImage).appendTo('#banner-holder');

    });

3 个答案:

答案 0 :(得分:6)

$('ul li').not(':first-child').each(function ()
    {
        var bigImage = $(this).find('a.main-img').attr('href');

        $('<img/>').attr('src', bigImage).appendTo('#banner-holder');

    });

答案 1 :(得分:2)

jQuery each method传递当前项的索引,因此您可以使用:

$('li').each(function (index)
{
    if (index > 0) { 
        var bigImage = $(this).find('a.main-img').attr('href');

        $('<img/>').attr('src', bigImage).appendTo('#banner-holder');
    }
});

或者,您可以使用gt selector

执行此操作
$('li:gt(0)').each(function() {
    ...
});

当前jQuery documentation有关于gt选择器的说明:

  

因为:gt()是一个jQuery扩展而不是CSS的一部分   规范,查询使用:gt()无法利用   本机DOM querySelectorAll()提供的性能提升   方法。要在现代浏览器中获得更好的性能,请使   $(“your-pure-css-selector”)。切片(索引)代替。

答案 2 :(得分:1)

  $('li:not(:first-child)').each(function ()
    {
     var bigImage = $(this).find('a.main-img').attr('href');

      $('<img/>').attr('src', bigImage).appendTo('#banner-holder');

  });

我没有测试过这个,但我认为它会起作用。