首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >隐藏.children很容易--如果是属于<dt>的<dd>呢

隐藏.children很容易--如果是属于<dt>的<dd>呢
EN

Stack Overflow用户
提问于 2010-12-30 18:30:46
回答 2查看 567关注 0票数 1

此代码提供了一个简单的翻转/卷展栏显示|隐藏功能:

代码语言:javascript
复制
$(document).ready(function () {
    $("div[class='lineItem']").hover(function () {

        $(this).children(".hiddenDesc").css("visibility", "visible");
    },
function () {
    $(this).children(".hiddenDesc").css("visibility", "hidden");
});
});

我如何为类似的结构提供类似的功能:

代码语言:javascript
复制
    <dl>
        <dt>
            High-level stuff 1
        </dt>
        <dd class="hiddenDesc">
            Extended explanatory stuff that goes on seemingly forever 1
        </dd>
        <dt>
            High-level stuff 2
        </dt>
        <dd class="hiddenDesc">
            Extended explanatory stuff that goes on seemingly forever 2
        </dd>
        <dt>
            High-level stuff 3
        </dt>
        <dd class="hiddenDesc">
            Extended explanatory stuff that goes on seemingly forever 3
        </dd>
    </dl>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-30 18:33:32

使用.next()代替.children(),如下所示:

代码语言:javascript
复制
$(document).ready(function () {
  $("dt").hover(function () {
    $(this).next().css("visibility", "visible");
  }, function () {
    $(this).next().css("visibility", "hidden");
  });
});

You can test it out here,有关DOM导航、从一个元素移动到另一个元素的相关问题,请务必查看tree-traversal section of the jQuery API

票数 3
EN

Stack Overflow用户

发布于 2010-12-30 18:54:57

不幸的是,这看起来有点复杂--多个dt元素可以与多个dd元素组合使用,因此您必须将nextAlladjacent sibling selector (+)结合使用:

代码语言:javascript
复制
$('dt').hover(function(){
    $(this).nextUntil('dt').toggleClass('visible');
});

CSS:

代码语言:javascript
复制
dd {
    visibility: hidden;
}

dd.visible {
    visibility: visible;
}

当然,如果你的超文本标记语言不是那么复杂,那么Nick's answer会做得很好。有关这方面的简单演示,请参阅:http://www.jsfiddle.net/EA4R5/4/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4561857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档