jQuery将类添加到多次存在的最近元素(jQuery add class to nearest element which exists multiple times)

编程入门 行业动态 更新时间:2024-10-28 21:14:11
jQuery将类添加到多次存在的最近元素(jQuery add class to nearest element which exists multiple times)

我有这样的结构:

<span class="side"> <ul> <li><a href="#"><i class="fas fa-print"></i></a></li> <li><a href="#"><i class="fas fa-print"></i></a></li> <li><span class="copy-short-url"><i class="fas fa-link"></i></span></li> <span class="confirm">Copied!</span> </ul> </span> ... <span class="side"> <ul> <li><a href="#"><i class="fas fa-print"></i></a></li> <li><a href="#"><i class="fas fa-print"></i></a></li> <li><span class="copy-short-url"><i class="fas fa-link"></i></span></li> <span class="confirm">Copied!</span> </ul> </span> ... <span class="side"> <ul> <li><a href="#"><i class="fas fa-print"></i></a></li> <li><a href="#"><i class="fas fa-print"></i></a></li> <li><span class="copy-short-url"><i class="fas fa-link"></i></span></li> <span class="confirm">Copied!</span> </ul> </span> ... <span class="side"> <ul> <li><a href="#"><i class="fas fa-print"></i></a></li> <li><a href="#"><i class="fas fa-print"></i></a></li> <li><span class="copy-short-url"><i class="fas fa-link"></i></span></li> <span class="confirm">Copied!</span> </ul> </span>

我现在想要添加一个类到“确认”范围。 但仅限于属于相应代码块的范围。 因此,当我点击第二个跨度“copy-short-url”时,只有第二个跨度“确认”必须获得额外的类。

我怎样才能做到这一点? 谢谢!

I have a structure like this:

<span class="side"> <ul> <li><a href="#"><i class="fas fa-print"></i></a></li> <li><a href="#"><i class="fas fa-print"></i></a></li> <li><span class="copy-short-url"><i class="fas fa-link"></i></span></li> <span class="confirm">Copied!</span> </ul> </span> ... <span class="side"> <ul> <li><a href="#"><i class="fas fa-print"></i></a></li> <li><a href="#"><i class="fas fa-print"></i></a></li> <li><span class="copy-short-url"><i class="fas fa-link"></i></span></li> <span class="confirm">Copied!</span> </ul> </span> ... <span class="side"> <ul> <li><a href="#"><i class="fas fa-print"></i></a></li> <li><a href="#"><i class="fas fa-print"></i></a></li> <li><span class="copy-short-url"><i class="fas fa-link"></i></span></li> <span class="confirm">Copied!</span> </ul> </span> ... <span class="side"> <ul> <li><a href="#"><i class="fas fa-print"></i></a></li> <li><a href="#"><i class="fas fa-print"></i></a></li> <li><span class="copy-short-url"><i class="fas fa-link"></i></span></li> <span class="confirm">Copied!</span> </ul> </span>

I now want to add a class to the span "confirm". But only for the span that belongs to the corresponding code block. So when I click on the second span "copy-short-url" only the second span "confirm" must get the additional class.

How can I do this? Thanks!

最满意答案

假设您处于.copy-short-url的单击事件处理程序中

$(this).closest('.side').find('.confirm').addClass('whatever');

closest()通过父母上升到dom树,直到找到匹配。 find()会通过查找所有匹配的子节点。

编辑:关于您在评论中的超时问题。

var $confirm = $(this).closest('.side').find('.confirm'); $confirm.addClass('whatever'); setTimeout(function(){ $confirm.removeClass('whatever'); }, 2000);

Provided you are in the click event handler for .copy-short-url

$(this).closest('.side').find('.confirm').addClass('whatever');

closest() goes up the dom tree through parents until it finds a match. find() goes down through children finding all matches.

Edit: In regard to your timeout question in the comments.

var $confirm = $(this).closest('.side').find('.confirm'); $confirm.addClass('whatever'); setTimeout(function(){ $confirm.removeClass('whatever'); }, 2000);

更多推荐

本文发布于:2023-07-30 07:09:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1336676.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:元素   class   add   jQuery   nearest

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!