You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery中如何不使用类/ID选择第二个h2标签?代码失效求助

解决思路:不用类名定位目标h2标签

首先,你之前用h2:nth-child(2)失效的原因很明确:在<a class="gamelink">这个父元素里,子元素的顺序是<img>(第1个子元素)→ <h2 class="title">(第2个)→ <h2 class="date">(第3个),所以:nth-child(2)选中的是标题那个h2,不是你要的日期h2,这就导致排序逻辑出错了。

下面给你几个不用依赖.date类名的可行方案,你可以根据后续代码修改的需求选择:

方案1:用:nth-of-type(2)按元素类型计数

:nth-of-type()是针对相同元素类型来计数的,在<a>的子元素里,第二个<h2>就是你要的日期标签,这个选择器不会被中间的<img>干扰:

$('#datereleased').on('click', function(){ 
    var $sortContainer = $('#sortcontainer'); 
    $sortContainer.append( 
        $sortContainer.children().sort(function(a, b){ 
            return ( 
                parseInt($("h2:nth-of-type(2)", b).attr('id'), 10) - 
                parseInt($("h2:nth-of-type(2)", a).attr('id'), 10) 
            ); 
        }).get() 
    ); 
});

方案2:用:not()排除已知的其他h2

如果标题h2的.title类名不会变动,你可以排除这个类来选中目标h2:

$('#datereleased').on('click', function(){ 
    var $sortContainer = $('#sortcontainer'); 
    $sortContainer.append( 
        $sortContainer.children().sort(function(a, b){ 
            return ( 
                parseInt($("h2:not(.title)", b).attr('id'), 10) - 
                parseInt($("h2:not(.title)", a).attr('id'), 10) 
            ); 
        }).get() 
    ); 
});

方案3:通过id属性定位

观察你的HTML结构,只有日期h2带有id属性,标题h2没有,所以可以用属性选择器h2[id]来精准定位:

$('#datereleased').on('click', function(){ 
    var $sortContainer = $('#sortcontainer'); 
    $sortContainer.append( 
        $sortContainer.children().sort(function(a, b){ 
            return ( 
                parseInt($("h2[id]", b).attr('id'), 10) - 
                parseInt($("h2[id]", a).attr('id'), 10) 
            ); 
        }).get() 
    ); 
});

这三个方案都不需要依赖.date类名,后续修改类名也不会影响功能,你可以根据自己的代码维护计划选最合适的~

内容的提问来源于stack exchange,提问作者Richard Hewett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:26:00