如何找到第一个“可见”的对象?
    • 内使用 jQuery?
  • 发布于 2024-12-04 22:50:53 字数 451 浏览 0 评论 0原文

    我无法执行 $('ul li:first')$('ul li:eq(0)') 因为它们选择的第一个项目不是必然是第一个可见项目。

    我正在使用 jCarousel Lite 插件:

    它的工作原理是通过给负数向左移动 ul每次单击“下一个”时,都会调整边距,并在单击“上一个”时将其向右移动。

    我想给第一个可见列表项一个红色边框颜色。该插件不会向列表中第一个可见项目的标记添加任何内容,那么我如何定位它呢?

    PS $('ul li:visible').is(':first') 也不起作用,因为该插件实际上并没有为不可见的 lis 提供任何 display none 属性。

    I can't do $('ul li:first') or $('ul li:eq(0)') because they select the first item which is not necessarily the first visible item.

    I'm using the jCarousel Lite plugin:

    It works by moving the ul left by giving it negative margin every time next is clicked and moving it right when prev is clicked.

    I want to give the first visible list item a red border color. The plugin doesn't add anything to the markup for the first visible item in the list so how can I target it?

    P.S. $('ul li:visible').is(':first') won't work either because the plugin doesn't actually give the non visible lis any display none property.

    如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

    扫码二维码加入Web技术交流群

    发布评论

    需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

    评论(6

    人疚 2024-12-11 22:50:53

    来自:http://www.gmarwaha.com/jquery/jcarousellite/#doc您可以使用 afterEnd 回调函数:

    结束后 -
    动画结束后应调用的回调函数。表示动画结束后可见项目的元素作为参数传入。

    $(".carousel").jCarouselLite({
        btnNext: ".next",
        btnPrev: ".prev",
        afterEnd: function(a) {
           $(a[0]).addClass("redBorder");
       }
    });
    

    From: http://www.gmarwaha.com/jquery/jcarousellite/#doc you can use the afterEnd callback function:

    afterEnd -
    Callback function that should be invoked after the animation ends. The elements representing the items that are visible after the animation ends are passed in as argument.

    $(".carousel").jCarouselLite({
        btnNext: ".next",
        btnPrev: ".prev",
        afterEnd: function(a) {
           $(a[0]).addClass("redBorder");
       }
    });
    
    为人所爱 2024-12-11 22:50:53

    有点繁琐的东西。这可以计算出应用于 jCarousel 的 left 偏移量,将其除以内部 li 项的宽度,从而计算出有多少 li左边,然后将其转换为内部的 :eq()

    var firstVisibleListItem = 0 - (parseInt($('.jCarouselLite ul').css('left')) / parseInt($('.jCarouselLite ul li').css('width'))) + 1
    $('.jCarouselLite ul li').filter(':eq(' + firstVisibleListItem + ')').hide();
    

    Something a little fiddly. This works out the left offset applied to the jCarousel, divides it by the width of the li items inside to work out how many lis are left of this one, and then converts that into an :eq() inside.

    var firstVisibleListItem = 0 - (parseInt($('.jCarouselLite ul').css('left')) / parseInt($('.jCarouselLite ul li').css('width'))) + 1
    $('.jCarouselLite ul li').filter(':eq(' + firstVisibleListItem + ')').hide();
    
    吾家有女初长成 2024-12-11 22:50:53

    要选择第一个

  • ,您需要执行以下操作:
  • $('ul li').filter(":first");   // best performance, as indicated in the API documentation
    

    当页面打开时,您是否能够计算出第一个可见项目(假设您知道有多少项目同时可见)最初加载?如果是,那么您可能可以通过监视单击上一个/下一个按钮来跟踪(例如,当单击下一个时,您将增加计算的位置)。

    To select the first <li>, you'd do:

    $('ul li').filter(":first");   // best performance, as indicated in the API documentation
    

    Would you be able to figure out the first visible item (assuming you know how many items are visible at the same time) when the page is initially loaded? If yes, then you might be able to keep track by monitoring the prev / next button is clicked (e.g. when next is clicked, you'd increment your calculated position).

    亚希 2024-12-11 22:50:53

    试试这个:) $('ul li:first-child') 我总是使用它。

    Try this one :) $('ul li:first-child') I always use it.

    谁的年少不轻狂 2024-12-11 22:50:53

    我从 CSS 中为第一个项目指定了红色边框颜色。

    .jCarouselLite ul li:first-child{
        border: 1px solid red;
    }
    

    I give the first item a red border color from CSS.

    .jCarouselLite ul li:first-child{
        border: 1px solid red;
    }
    
    青衫负雪 2024-12-11 22:50:53

    试试这个:

    $('ul li').first(); // ta da?
    

    Try this:

    $('ul li').first(); // ta da?
    
    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文