为何使用jQuery无法匹配同一父元素下class为folder-header的元素?
问题原因及解决方法
你的问题核心出在parent('thead')的用法上:
- jQuery的
parent()方法仅会查找当前元素的直接父节点,而你点击的<a class="lnk-folder">的直接父元素是<div>,并非<thead>,所以这一步返回的是空jQuery对象,后续的.find('.folder-header')自然无法匹配到任何元素。
结合你的DOM结构层级更直观:
<thead> <tr> <th> <div> <a class="lnk-folder">...</a> <!-- 触发点击的元素 --> </div> </th> </tr> <tr class="folder-header">...</tr> <!-- 目标元素 --> </thead>
要正确定位到同一<thead>下的.folder-header,你需要使用能向上遍历DOM树查找祖先元素的方法,推荐用closest('thead')(找到最近的匹配祖先就停止遍历,效率更高),也可以用parents('thead')(会查找所有匹配的祖先元素)。
修正后的代码如下:
$('.lnk-folder').click(function(e) { e.preventDefault(); // 先向上找到最近的thead,再查找其内部的folder-header var header = $(this).closest('thead').find('.folder-header'); console.log(header); });
内容的提问来源于stack exchange,提问作者ESB691
相关产品推荐
相关产品推荐

