Jquery:忘记DOM结构,只需找到这个类的下一个元素

web*_*ebo 13 jquery

我觉得之前已经问过这个问题,但答案似乎对每张海报都非常具体.

我正在寻找一种方法来识别给定元素并找到具有特定类的下一个元素.我不想处理parent()或children(),因为我正在通过表解析,我不希望它停在一行的末尾甚至是表本身的末尾(那里)是两个并排).

有没有办法只搜索整个页面的下一个元素实例?

背景信息:http: //jsfiddle.net/HKkAa/2/

我正在尝试从突出显示的单元格开始遍历底部表格,并将"突出显示"类应用于每个单元格,直到我到达结束日期.我有办法计算当我到达结束日期时,我只需要魔术方法来选择下一个链接实例.

tec*_*bar 14

编辑

对于任何有兴趣的人,我都会在这里插件:https://github.com/techfoobar/jquery-next-in-dom


如果你想让它完全通用并且能够满足所有/任何DOM结构,那么在jQuery中没有内置的方法.我曾经设计过一个简单的递归函数来完成这个任务.它像:

function nextInDOM(_selector, _subject) {
    var next = getNext(_subject);
    while(next.length != 0) {
        var found = searchFor(_selector, next);
        if(found != null) return found;
        next = getNext(next);
    }
    return null;
}
function getNext(_subject) {
    if(_subject.next().length > 0) return _subject.next();
    return getNext(_subject.parent());
}
function searchFor(_selector, _subject) {
    if(_subject.is(_selector)) return _subject;
    else {
        var found = null;
        _subject.children().each(function() {
            found = searchFor(_selector, $(this));
            if(found != null) return false;
        });
        return found;
    }
    return null; // will/should never get here
}
Run Code Online (Sandbox Code Playgroud)

你可以称之为:

nextInDOM('selector-to-match', element-to-start-searching-from-but-not-inclusive);
Run Code Online (Sandbox Code Playgroud)

例如:

var nextInst = nextInDOM('.foo', $('#item'));
Run Code Online (Sandbox Code Playgroud)

将让你的第一个匹配.foo后,$('#item')无论DOM结构

在这里查看原始答案:https://stackoverflow.com/a/11560428/921204

  • 也许他们没有找到足够的用例来保证包含在核心中.但是,我认为它会非常有用. (3认同)