获取具有相同类的下一个元素

时间:2010-11-24 08:58:08

标签: jquery

我对具有特定类的元素使用click事件。在click事件函数中,我需要使用相同的类获取页面上的下一个元素。我试过了:

$('.class').click(function() {
    var $next = $(this).next('.class')  
});

$('.class').click(function() {
    var $next = $(this).parent().parent().parent().next('.class')  
});

.class是表中td内的div,这就是为什么三次parent()。

我的HTML是这样的(.class是.drag):

<table cellspacing="0" cellpadding="0" border="0" class="black8">
<tr class="trow1 drop trow1_over" 
    rel="0,1">
    <td>
            <div class="drop rootFolder" 
                 rel="0,1"></div>
    </td>
    <td width="100%" 
        class="folderListOnclick">

            <span>.. (koreňový adresár)</span>
    </td>
    <td>
    </td>
    <td>
    </td>
</tr><tr class="trow1">
    <td>
        <div class="drag drop ordinaryFolder" 
             rel="1,1" 
             style="width: 40px;">

        </div>
    </td>
    <td width="100%" 
        class="folderListOnclick" 
        rel="1">
            <span>aaa</span>
    </td>
    <td>
        <div class="button_mini folderEditOnclick" 
             rel="1">
                    <span></span>

        </div>
    </td>
    <td>
        <div class="button_mini folderDeleteOnclick" 
             rel="1">
                    <span><span>
        </div>
    </td>
</tr><tr class="trow1">
    <td>

        <div class="drag drop ordinaryFolder" 
             rel="19,1" 
             style="width: 50px;">
        </div>
    </td>
    <td width="100%" 
        class="folderListOnclick" 
        rel="19">
            <span>subaaa</span>
    </td>
    <td>
        <div class="button_mini folderEditOnclick" 
             rel="19">

                    <span></span>
        </div>
    </td>
    <td>
        <div class="button_mini folderDeleteOnclick" 
             rel="19">
                    <span><span>
        </div>
    </td>
</tr>
</table>

3 个答案:

答案 0 :(得分:5)

这个怎么样?你应该检查一下一个错误,因为我还没有测试过它。

$('.class').click(function () {
  var index = $('.class').index($(this));
  var $next = $('.class').slice(index+1,index+2);
  ...
});

答案 1 :(得分:3)

您可以尝试:

$(".drag").click(function() {
    var draggables = $(this).parents("table").find(".drag");
    var $next = draggables.filter(":gt(" + draggables.index(this) + ")").first();
});

答案 2 :(得分:1)

您可以结合使用slice()each()

var elements = $('.class');

elements.each(function(index, element) {
    $(this).click(function() {
        var $next = elements.slice(index+1, index+2);
    });
});

DEMO

或者(尽管可能效率较低)将获得对共同祖先的引用并使用slice()index()

$('.class').click(function() {
    var elements = $(this).closest('table').find('.class');
    var index = elements.index(this);
    $next = elements.slice(index + 1, index + 2);
});