Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何搜索深层嵌套元素而不必遍历顶层元素的嵌套副本?_Jquery_Performance_Jquery Traversing - Fatal编程技术网

Jquery 如何搜索深层嵌套元素而不必遍历顶层元素的嵌套副本?

Jquery 如何搜索深层嵌套元素而不必遍历顶层元素的嵌套副本?,jquery,performance,jquery-traversing,Jquery,Performance,Jquery Traversing,例如,我在一个页面上有4个无序列表: <div class="UL-GROUP"> <div> <ul class="UL"> <li><a href="#something1"></a></li> <li><a href="#something2"></a></li>

例如,我在一个页面上有4个无序列表:

<div class="UL-GROUP">
    <div>
        <ul class="UL">
            <li><a href="#something1"></a></li>
            <li><a href="#something2"></a></li>
            <li><a href="#something2"></a></li>
            <li><a href="#something3"></a>
                <div class="UL-GROUP">
                    <div>
                        <ul class="UL">
                            <li><a href="#something4"></a></li>
                            <li><a href="#something5"></a></li>
                            <li><a href="#something6"></a></li>
                            <li><a href="#something7"></a>
                                <div class="UL-GROUP">
                                    <div>
                                        <ul class="UL">
                                            <li><a href="#something8"></a></li>
                                            <li><a href="#something9"></a></li>
                                            <li><a href="#something10"></a></li>
                                            <li><a href="#something11"></a></li>
                                        </ul>
                                        <div class="contents">Loads of elements in here</div>
                                    </div>
                                </div>
                            </li>
                        </ul>
                        <div class="contents">Loads of elements in here</div>
                    </div>
                </div>
            </li>
        </ul>
        <div class="contents">Loads of elements in here</div>
    </div>
</div>
<div class="UL-GROUP">
    <div>
        <ul class="UL">
            <li><a href="#something12"></a></li>
            <li><a href="#something13"></a></li>
            <li><a href="#something14"></a></li>
            <li><a href="#something15"></a></li>
        </ul>
        <div class="contents">Loads of elements in here</div>
    </div>
</div>
编辑以澄清: 我曾想过简化此过程,但使用以下代码,我无法确定如何跟踪哪个.UL-GROUP拥有我正在寻找的密钥(即使用.data):


为什么不直接使用选择器并获取最接近的父级UL

$('a[href*="#something4"]').closest('ul');

为什么不直接使用选择器并获取最接近的父级UL

$('a[href*="#something4"]').closest('ul');

为什么不直接使用选择器并获取最接近的父级UL

$('a[href*="#something4"]').closest('ul');

为什么不直接使用选择器并获取最接近的父级UL

$('a[href*="#something4"]').closest('ul');

@Sushanth的解决方案很好,您也可以使用
:has
选择器

$('.UL-GROUP:has( > div > ul > li > a[href*="#something4"])').each(function(i, ul) {
    console.log(ul);
});

@Sushanth的解决方案很好,您也可以使用
:has
选择器

$('.UL-GROUP:has( > div > ul > li > a[href*="#something4"])').each(function(i, ul) {
    console.log(ul);
});

@Sushanth的解决方案很好,您也可以使用
:has
选择器

$('.UL-GROUP:has( > div > ul > li > a[href*="#something4"])').each(function(i, ul) {
    console.log(ul);
});

@Sushanth的解决方案很好,您也可以使用
:has
选择器

$('.UL-GROUP:has( > div > ul > li > a[href*="#something4"])').each(function(i, ul) {
    console.log(ul);
});

可能希望使用主父级限定第一个选择器,这样就不会尝试匹配目标区域外的其他URL。可能希望使用主父级限定第一个选择器,这样就不会尝试匹配目标区域外的其他URL。可能希望使用主父级限定第一个选择器,这样就不会尝试匹配其他URL目标区域外的URL。可能希望使用主父级限定第一个选择器,这样就不会尝试匹配目标区域外的其他URL。这对我来说非常有用。再进一步,您可能可以在迭代.UL-GROUP元素的.each()循环中执行此操作?@u353,我已更新了迭代所选元素的答案。这就是你想要的吗?不完全是(我需要更好地提问和寻找答案!)你所做的不仅仅是回答问题。。。但是为了避免这又是一个“谢谢你”的评论,让我解释一下,既然你和Sushanth已经回答了,我现在要做的是:我已经有了一个.each函数,它迭代页面上所有的.UL-GROUPS(它对UL-GROUPS和后续的元素分组,即,.UL&li&a)进行一些dom操作)。我正试图找到一种方法来使用这个已经存在的功能。每个功能都可以实现与上面相同的功能,减少代码并提高性能。这对我来说非常有用。再进一步,您可能可以在迭代.UL-GROUP元素的.each()循环中执行此操作?@u353,我已更新了迭代所选元素的答案。这就是你想要的吗?不完全是(我需要更好地提问和寻找答案!)你所做的不仅仅是回答问题。。。但是为了避免这又是一个“谢谢你”的评论,让我解释一下,既然你和Sushanth已经回答了,我现在要做的是:我已经有了一个.each函数,它迭代页面上所有的.UL-GROUPS(它对UL-GROUPS和后续的元素分组,即,.UL&li&a)进行一些dom操作)。我正试图找到一种方法来使用这个已经存在的功能。每个功能都可以实现与上面相同的功能,减少代码并提高性能。这对我来说非常有用。再进一步,您可能可以在迭代.UL-GROUP元素的.each()循环中执行此操作?@u353,我已更新了迭代所选元素的答案。这就是你想要的吗?不完全是(我需要更好地提问和寻找答案!)你所做的不仅仅是回答问题。。。但是为了避免这又是一个“谢谢你”的评论,让我解释一下,既然你和Sushanth已经回答了,我现在要做的是:我已经有了一个.each函数,它迭代页面上所有的.UL-GROUPS(它对UL-GROUPS和后续的元素分组,即,.UL&li&a)进行一些dom操作)。我正试图找到一种方法来使用这个已经存在的功能。每个功能都可以实现与上面相同的功能,减少代码并提高性能。这对我来说非常有用。再进一步,您可能可以在迭代.UL-GROUP元素的.each()循环中执行此操作?@u353,我已更新了迭代所选元素的答案。这就是你想要的吗?不完全是(我需要更好地提问和寻找答案!)你所做的不仅仅是回答问题。。。但是为了避免这又是一个“谢谢你”的评论,让我解释一下,既然你和Sushanth已经回答了,我现在要做的是:我已经有了一个.each函数,它迭代页面上所有的.UL-GROUPS(它对UL-GROUPS和后续的元素分组,即,.UL&li&a)进行一些dom操作)。我正试图找到一种方法来使用这个已经存在的函数。每个函数都可以实现与上面相同的功能,以减少代码并提高性能。