首页 > 解决方案 > 嵌套最接近 javascript 的更好方法(不是 jQuery)

问题描述

我使用香草 javascript,没有 jQuery。

在我的代码中,我有一些看起来像这样的东西:

item.closest('ul').closest('li').closest('ul').classList.add('active');

虽然它有效,但它看起来并不那么好。我重复closest三遍。

在这种情况下有可能做一些更聪明的事情吗?

标签: javascriptnestedclosest

解决方案


没有标准的方法可以缩短它。

你可以:

  1. 向您尝试选择的元素添加一个类。这将使您的选择器看起来像这样: item.closest('ul.myClass').classlist.add('active')
  2. 创建一个包装closest链创建的函数:

    function closestChain(item) {
        return Array.from(arguments).reduce((acc, val) => {
            return acc.closest(val);
        });
    }
    
    closestChain(item, 'ul', 'li', 'ul').classlist.add('active');
    
  3. 或者您可以等待has CSS 选择器可用

推荐阅读