jQuery仅将功能应用于类和父元素

jQuery仅将功能应用于类和父元素,jquery,html,css,Jquery,Html,Css,我有以下清单: <ul> <li class="topCurrent">One <ul> <li>One-1 <ul> <li>One-1.1 <ul> <li class="current">One-1.1.1

我有以下清单:

<ul>
<li class="topCurrent">One
    <ul>
        <li>One-1
            <ul>
                 <li>One-1.1
                     <ul>
                         <li class="current">One-1.1.1
                             <ul>
                                 <li>One-1.1.1.1</li>
                                 <li>One-1.1.1.2</li>
                                 <li>One-1.1.1.3</li>
                             </ul>
                         </li>
                         <li>One-1.1.2</li>
                     </ul>
                 </li>
                 <li>One-1.2</li>
            </ul>
        </li>
        <li>One-2</li>
        <li>One-3</li>
    </ul>
</li>
<li>Two
    <ul>
        <li>Two-1</li>
        <li>Two-2</li>
    </ul>
</li>
这样做的目的是将所有ul隐藏在顶级ul之下,直到出现悬停

我想做的是:

如果一个li有一个
class=“current”
我希望该结构打开,直到电流到达该点为止。它仍然允许在悬停状态下显示其下方的ul以及任何其他ul,但在任何时候都不会隐藏
class=“current”
的父级

建议?这个问题快把我逼疯了


谢谢

这应该是您所需要的全部:

$("ul li:not(:has(li.current))")
   .find("ul").hide().end() // Hide all other ULs
   .hoverIntent(
        function(){
            $(this).children('ul').slideDown('fast');
        },
        function(){
           $(this).children('ul').slideUp('fast');
        }
    );
这将防止悬停功能应用于任何具有
LI.current
作为子级的LI


(使用hover而不是hoverIntent以便于演示)。

只需将hoverIntent调用更改为以下内容:

$("ul li").hoverIntent(
    function(){
        $(this).children('ul').slideDown('fast');
    },
    function(){
       $(this).children('ul').not($('.current').parents()).slideUp('fast');
    }
);
p.S.应该提到,我的答案是指我的答案。
P.P.S.希望我的调试时间因为你引用了那篇文章而没有更改类名而减少。

太棒了!谢谢。:)
$("ul li").hoverIntent(
    function(){
        $(this).children('ul').slideDown('fast');
    },
    function(){
       $(this).children('ul').not($('.current').parents()).slideUp('fast');
    }
);