javascript - 如何在没有库的情况下在 Vanilla JavaScript 中实现 "prevUntil"?

标签 javascript dom siblings

我需要实现 jQuery 的 prevUntil() 的功能Vanilla JavaScript 中的方法。

我有几个 <div>同一层级的元素:

<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>

我正在尝试使用 onclick查找 event.target 的事件的 previousSiblings 直到达到某个标准(例如,类名匹配)然后停止。

我如何实现这一目标?

最佳答案

此答案之前已发布here回答类似的问题。

有几种方法可以做到这一点。

以下任何一项都可以解决问题。

// METHOD A (ARRAY.FILTER, STRING.INDEXOF)
var siblings = function(node, children) {
    siblingList = children.filter(function(val) {
        return [node].indexOf(val) != -1;
    });
    return siblingList;
}

// METHOD B (FOR LOOP, IF STATEMENT, ARRAY.PUSH)
var siblings = function(node, children) {
    var siblingList = [];
    for (var n = children.length - 1; n >= 0; n--) {
        if (children[n] != node) {
            siblingList.push(children[n]);
        }  
    }
    return siblingList;
}

// METHOD C (STRING.INDEXOF, ARRAY.SPLICE)
var siblings = function(node, children) {
   siblingList = children;
   index = siblingList.indexOf(node);
   if(index != -1) {
       siblingList.splice(index, 1);
   }
   return siblingList;
}

仅供引用:jQuery 代码库是观察 A 级 Javascript 的重要资源。

这是一个非常出色的工具,它以非常简化的方式显示 jQuery 代码库。 http://james.padolsey.com/jquery/

关于javascript - 如何在没有库的情况下在 Vanilla JavaScript 中实现 "prevUntil"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7354154/

相关文章:

javascript - 使用 JavaScript 的逻辑运算符压缩 if/else if 语句

Javascript On 模糊事件

如果其他 child 有图像,则 css 选择 child

接下来是 jquery,这不起作用

css - 是否有 "previous sibling"选择器?

javascript - 使用 json.stringify 的 Anagram 解决方案,这是解决问题的正确方法吗

javascript - 为什么 document.getElementById 返回一个具有名为 'value' 的属性的对象?

javascript - 在指令中调用 $compile($element)($scope) 的目的是什么

javascript - 无法以编程方式使用 Javascript 填充 iframe

javascript - 错误 TS2351 : This expression is not constructable.(带有 TypeScript 的 AJV)