获取列表中的第一个DOM元素

时间:2013-09-17 07:52:03

标签: javascript dom

我有一个DOM元素数组,而不是DOM顺序。我怎样才能得到第一个,即DOM中第一个出现的那个?

如果jQuery可以在这里提供帮助,那会很好。

由于

2 个答案:

答案 0 :(得分:1)

由于您已经说过 visual 顺序(而不是DOM顺序)就足够了,您可以这样做:

var first, firstTop, firstLeft;
$.each(yourArray, function(index, element) {
    var pos = $(element).offset();
    if (!first ||
        (pos.top < firstTop) ||
        (pos.top === firstTop && pos.left < firstLeft)
       ) {
        first = element;
        firstTop = pos.top;
        firstLeft = pos.left;
    }
});

那就是说,我不认为在DOM上进行递归下降并且停在你找到的第一个元素上,就像你认为的那样,你的评论就是这么多,尤其是。因为您只对表单中的元素感兴趣。这些方面的东西:

function getFirstInDOM(list, root) {
    var node, found;
    for (node = root.firstChild; node; node = node.nextSibling) {
        // I assume you only care about elements, so skipping other nodes
        if (node.nodeType === 1) {
            if (list.indexOf(node) !== -1) {
                // Found
                return node;
            }
            found = getFirstInDOM(list, node);
            if (found) {
                return found;
            }
        }
    }
    return null;
}

Live Example | Live Source

答案 1 :(得分:1)

发现这个stackoverflow answer表明当你用jQuery添加两个元素时,它们将以文档顺序结束。

所以基本上我们可以做$()。add(elementList).eq(0)。