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

标签 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>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>

使用以下 jQuery:

$("ul li ul").hide();

$("ul li").hoverIntent(
    function(){
        $(this).children('ul').slideDown('fast');
    },
    function(){
       $(this).children('ul').slideUp('fast');
    }
);

这样做是将所有 ul 隐藏在顶级 ul 之下,直到鼠标悬停在它上面。

我想做的是:

如果一个 li 有一个 class="current" 我希望那个结构一直打开直到 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。

Here is a demo (使用悬停而不是 hoverIntent 以便于演示)。

关于jQuery 仅将功能应用于类和父元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2860199/

相关文章:

jquery - 是否可以使用 jQuery-validate 知道单个字段验证何时失败

javascript - jQuery 和 IE : Checking for hidden inputs "checked"-attribute does not work

javascript - 在插入符号位置插入嵌套元素

HTML 宽度 100% 超出页面范围

css - Bootstrap 3 和 .col-xs-*——你不需要 12 个单位的行吗?

jQuery - 父级 "this"

javascript - jquery .show() 和后退按钮

php - 我希望能够在每次单击随机播放按钮时随机播放问题

html - 尝试使用 XSLT 2.0 在 HTML &lt;style&gt; 元素中嵌入包含 '>' 子选择器的 CSS

css - 如何让 PagedList.Pagecount 和 @Html.PagedListPager 显示在同一行?