jQuery中如何在:contains选择器使用变量删除最近的指定类元素
问题根因
- jQuery的
closest()方法仅会向上遍历当前元素的祖先节点,不会查询兄弟节点、兄弟节点的后代节点。你通过:contains选择器匹配到的是<div hidden class="comment-pk">1</div>元素,该元素的祖先链里不存在flag-container类的元素,自然无法执行删除操作。 :contains是模糊匹配规则,若存在其他包含对应数字的div元素会出现误匹配,不推荐用于精确值匹配。
修复方案
根据你给出的DOM结构,匹配到对应comment_pk的元素后,先定位到它的下一个兄弟节点drilled-hierarchy,再查找该节点下的flag-container元素执行删除即可,参考代码如下:
function remove_div() { let comment_pk = 1 // 精确匹配内容等于comment_pk的.comment-pk类元素 $(".comment-pk").filter(function() { return $(this).text().trim() === String(comment_pk) // 找下一个兄弟节点下的.flag-container元素删除 }).next('.drilled-hierarchy').find('.flag-container').remove() } $('#trigger').click(function() { remove_div() })
如果后续DOM结构有调整,可根据实际层级调整遍历规则即可,核心逻辑是不要用closest查找非祖先层级的元素。
内容的提问来源于stack exchange,提问作者JSRB
相关产品推荐
相关产品推荐

