【问题标题】:jquery: Find first element by attributejquery:按属性查找第一个元素
【发布时间】:2013-04-30 03:01:43
【问题描述】:

我的网页左侧有一个类别列表,右侧有一个项目列表。包含项目的列表有一个名为 cat 的属性,值是数字。

单击类别应该会滚动到具有相同类别 ID 的第一个项目。

有什么建议吗? :)

这里是html:

asp:Repeater runat="server" ID="repCategory" OnItemDataBound="CategoryItemRepeater">
            <HeaderTemplate>
                <ul class="menuListUl">
            </HeaderTemplate>
            <ItemTemplate>
                <li>
                    <div id="catItem" runat="server"></div>
                </li>
            </ItemTemplate>
            <FooterTemplate></ul></FooterTemplate>
        </asp:Repeater>


 <div id="menuList">
            <asp:Repeater runat="server" ID="repFooditems" OnItemDataBound="MenuItemRepeater">
                <ItemTemplate>
                    <div class="menuItem" id="menuItem" runat="server">
                        <div runat="server" class="itemNumber" id="ItemId"></div>
                        <div runat="server" class="itemName" id="itemName"></div>
                        <div runat="server" class="itemDescription" id="itemDescriptionLbl"></div>
                    </div>
                </ItemTemplate>
            </asp:Repeater>

        </div>

代码隐藏:

分类列表:

var lbl = (HtmlGenericControl)e.Item.FindControl("catItem");

lbl.Attributes.Add("catId",""+rest.CategoryId);

项目列表:

var menuItem = (HtmlGenericControl)e.Item.FindControl("menuItem");
            menuItem.Attributes.Add ("cat","cat"+item.Item.Category.FirstOrDefault().CategoryId);

jquery:

$('.menuListUl li div').bind('click', function ()
        {
            var catId = $(this).attr('catid'); //The categoryid on the element clicked.


            // Now: find the first element with the same cat id

            var element = ""; The element found.

            $('html, body').animate({
                scrollTop: element.offset().top
            }, 2000);
        });

【问题讨论】:

    标签: jquery html webforms


    【解决方案1】:

    这将为您选择以 'foobar' 作为 catid 的元素。看来这就是你想要的吧?

    $('.menuListUl li div[catid="foobar"]')
    

    【讨论】:

    • 太完美了 :) 谢谢!我会尽快接受答案
    • 其实。这将获得类别列表中的元素,而我需要项目列表中的第一项。
    • @sindrem 你可以这样做 $('.menuListUl li div[catid="foobar"]')[0] 或 $('.menuListUl li div[catid="foobar"]') .first()
    猜你喜欢
    • 2010-10-16
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    相关资源
    最近更新 更多