如何从LI元素回溯到class为one的上级DIV元素?
解决方法:回溯到class为one的上级DIV元素
既然你已经在使用jQuery,推荐用它的DOM遍历方法来定位目标元素,比手动调用previousElementSibling更可靠(后者依赖固定DOM结构,一旦结构变动就会失效)。
方法1:使用closest()
closest()会从当前元素开始向上遍历DOM树,返回第一个匹配指定选择器的祖先元素(包含自身):
// this 指向当前操作的li元素 var $targetDiv = jQuery(this).closest('.one');
方法2:使用parents()
parents()会遍历当前元素的所有祖先节点,再通过first()获取第一个匹配.one的元素:
var $targetDiv = jQuery(this).parents('.one').first();
原生方法无效的原因
你提供的DOM结构里,li的层级是:li → ul → .two → div → .one,li和.one并非同级节点,中间隔了多层父元素,用previousElementSibling根本无法跨层级定位到.one,这也是手动遍历原生DOM节点的局限性。
内容的提问来源于stack exchange,提问作者Skant
相关产品推荐
相关产品推荐

