如何实现“prevUntil”在没有库的 Vanilla JavaScript 中?
我需要在 Vanilla 中实现 jQuery 的 prevUntil()
方法的功能JavaScript。
我在同一级别上有多个
元素:<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
我正在尝试使用 onclick
事件来查找 event.target
的 previousSiblings
直到达到特定条件(例如,类名匹配),然后停止。
我该如何实现这一目标?
I need to implement the functionality of jQuery's prevUntil()
method in Vanilla JavaScript.
I've got several <div>
elements on the same level:
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
I'm trying to use an onclick
event to find the event.target
's previousSiblings
until a certain criteria is reached (for example, a class name match) then stop.
How do I achieve this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
将
.children
与.parentNode
结合使用。然后将NodeList
转换为数组后对其进行过滤: http://jsfiddle.net /pimvdb/DYSAm/。Use
.children
in combination with.parentNode
. Then filter theNodeList
, after converting it into an array: http://jsfiddle.net/pimvdb/DYSAm/.怎么样:
别费心告诉我这在 IE8 中不起作用......
How about this:
Don't bother telling me that this doesn't work in IE8...
只需看看 jQuery 是如何实现的。
它使用一个名为 dir() 的 while/循环函数。 prevUntil 一直持续到
previousSibling
与until
元素相同为止。Just take a look at how jQuery does it.
Which uses a while / looping function caled dir(). The prevUntil just keeps going until
previousSibling
is the same as theuntil
element.HTML DOM 中有一个 previousSibling 属性
这是一些参考
http://reference.sitepoint.com/ javascript/Node/previousSibling
There is a previousSibling property in the HTML DOM
Here is some reference
http://reference.sitepoint.com/javascript/Node/previousSibling
您可以使用
indexOf
来确定兄弟元素的索引是否小于目标元素的索引:祝你好运。
You could use
indexOf
to determine if the index of the siblings are less than the index of the target element:Good luck.
此答案之前已在此处发布作为回应类似的问题。
有几种方法可以做到这一点。
以下任一方法都可以解决问题。
仅供参考:jQuery 代码库是观察成绩的重要资源Javascript。
这是一个优秀的工具,它以非常简化的方式揭示 jQuery 代码库。
http://james.padolsey.com/jquery/
This answer was previously published here in response to a similar question .
There are a few ways to do it.
Either one of the following should do the trick.
FYI: The jQuery code-base is a great resource for observing Grade A Javascript.
Here is an excellent tool that reveals the jQuery code-base in a very streamlined way.
http://james.padolsey.com/jquery/
示例
使用 previousElementSibling:
Example
Using previousElementSibling: