首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打开并关闭或返回(如果已打开导航

问打开并关闭或返回(如果已打开导航
EN

Stack Overflow用户
提问于 2012-02-16 19:20:01
回答 2查看 133关注 0票数 1

我有一个导航,点击一下我就会展开它,但如果它已经展开了,我们再次点击它,它不应该做任何事情(返回)。我有这个代码,但它不能正常工作,目前,如果我点击项目,它会展开它,但如果我再次点击,它会关闭导航,如果我再次点击,它会展开它,但它的行为很滑稽。我基本上只需要能够点击并打开,如果已经打开,什么也不做,因为我将有一个关闭按钮。附注:"item“是我之前在代码中定义的一个变量。

代码语言:javascript
复制
var item = $(".nav a");
<div class="nav">
    <a href="#">Trigger</a>
    <div class="wrapSubContent">
         <div class="wrapNavtoShowHide">
            ..content..
         </div>
     </div>
</div>

item.click(function(e) {
    e.preventDefault();
    $(".wrapSubContent").slideToggle("slow", "linear", function(){
        $(".wrapNavtoShowHide").slideToggle("slow", "linear");
    });
});

有没有人?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-16 19:52:54

您应该检查div是否隐藏,然后使用slideDown。

代码语言:javascript
复制
var item = $(".nav a");
$(".wrapNavtoShowHide").hide();
item.click(function(e) {
    e.preventDefault();
    if ($(".wrapNavtoShowHide").is(":hidden")) {
        $(".wrapNavtoShowHide").slideDown("slow", "linear");
    }
});

让我们来看看这一点的实际jsfiddle example。

票数 2
EN

Stack Overflow用户

发布于 2012-02-16 19:41:18

检查div是否已经打开,如下图所示

代码语言:javascript
复制
item.click(function(e) {
    e.preventDefault();
    if ( $(".wrapSubContent").is(":visible") ) {
     return
    }
        $(".wrapSubContent").slideToggle("slow", "linear", function(){
            $(".wrapNavtoShowHide").slideToggle("slow", "linear");
        });
});

或者:

代码语言:javascript
复制
item.click(function(e) {
    e.preventDefault();
    if ( $(".wrapSubContent:visible").length > 0) {
     return
    }
        $(".wrapSubContent").slideToggle("slow", "linear", function(){
            $(".wrapNavtoShowHide").slideToggle("slow", "linear");
        });
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9310368

复制
相关文章

相似问题

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