Javascript 在jquery中使用索引或eq按类捕获元素

Javascript 在jquery中使用索引或eq按类捕获元素,javascript,jquery,Javascript,Jquery,HTML代码: <table border='1' cellpadding='5'> <tr> <td class="order"><a href="#">two</a></td> <td>demo</td> <td>last</td> </tr> <tr> <

HTML代码:

<table border='1' cellpadding='5'> 
    <tr>
        <td class="order"><a href="#">two</a></td>
        <td>demo</td>
        <td>last</td>
    </tr>
    <tr>
        <td>two</td>
        <td class="order"><a href="#">three two</a></td>
        <td>sample</td>
    </tr>
    <tr>
        <td>two</td>
        <td class="order"><a href="#">five two</a></td>
        <td>sample</td>
    </tr>
    <tr>
        <td>five</td>
        <td>quick</td>
        <td class="order"><a href="#">nine</a></td>
    </tr>
</table>
单击任何
顺序
类,我希望获得具有相同
顺序
类的上一个或下一个元素。我的代码有什么问题

这是我的


谢谢。

该代码有两个问题:

  • 首先,这种形式的将告诉您元素相对于其同级的索引,而不是相对于具有相同类的其他元素的索引。因此,对于HTML,它将始终为1,因为所有
    .order
    元素都是其父元素中的第二个子元素

  • 第二件事是这条线:

    var text = $(".order:eq(index-1)").text();
    
    …使用
    索引
    字面意思,它不会交换
    索引
    变量的值

  • 使用
    索引
    ,您的思路是正确的,不过,您只需使用:

    然后,与其构建jQuery无法移交给浏览器的选择器(因为它使用jQuery特定的
    :eq
    选择器),不如使用以下函数:

    但您可能还需要处理没有前面元素的情况,可能是:

    var text = index > 0 ? orders.eq(index - 1).text() : "default text";
    
    实例:

    $('.order')。单击(函数(){
    风险值订单=$(“.order”);
    var指数=订单指数(本);
    var text=index>0?orders.eq(index-1.text():“默认文本”;
    警报(文本);
    返回false;
    });
    
    
    演示
    最后的
    二
    样品
    二
    样品
    五
    快的
    
    索引
    是一个变量,因此必须将其添加到jQuery中的字符串中,如下所示:

    $(".order").click(function() {
        var index = $(".order").index(this);
        var text = $(".order:eq("+(index-1)+")").text();
        alert(text);
    });
    

    您需要根据集合集查找索引

    var $orders = $('.order').click(function () {
        var index = $orders.index(this);
        if (index > 0) {
            var text = $orders.eq(index - 1).text();
            alert(text);
        }
    });
    
    演示:

    var text = index > 0 ? orders.eq(index - 1).text() : "default text";
    
    $(".order").click(function() {
        var index = $(".order").index(this);
        var text = $(".order:eq("+(index-1)+")").text();
        alert(text);
    });
    
    var $orders = $('.order').click(function () {
        var index = $orders.index(this);
        if (index > 0) {
            var text = $orders.eq(index - 1).text();
            alert(text);
        }
    });