编辑
对于任何有兴趣的人,我已经在这里对它进行了插件化: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
}
你可以这样称呼它:
nextInDOM('selector-to-match', element-to-start-searching-from-but-not-inclusive);
例如:
var nextInst = nextInDOM('.foo', $('#item'));
无论 DOM 结构如何,都会为.foo
您提供第一个匹配项$('#item')
在此处查看原始答案:https ://stackoverflow.com/a/11560428/921204