【问题标题】:Showing and hiding divs on click单击时显示和隐藏 div
【发布时间】:2023-03-15 06:02:02
【问题描述】:

我有一个带有 3 个菜单点的导航栏。称为“家”“bildformate”和“kontakt”。加载时,导航栏下方显示一个带有“home”类的 div,显示文本等。其他 2 个 div 被隐藏。当我单击“bildformate”时,我希望主 div 消失,并且应该可以看到带有“formate”类的 div。 div“kontakt”也是如此。但让我们首先关注“bildformate” div。这是我现在的代码:

<script>
$(document).ready(function(){
    $('.bildformate').click(function() {
        // show and hide
        $('.home').hide();
        $('.formate').show();   
    });
});

所以当我点击“bildformate”时,它的工作时间就像一瞬间。您可以看到“home” div 变得不可见,“formate” div 闪烁第二次。然后一切看起来就像以前一样。为什么?

3 个 div 的 CSS:

.home {
margin: 0 auto;
margin-top: 30px;
width: 60%;
padding: 0px;
background-color:#ededed;
color: #787878;
border-radius: 5px;
}

.formate {
margin: 0 auto;
margin-top: 30px;
width: 60%;
padding: 0px;
background-color:#ededed;
color: #787878;
border-radius: 5px;
}

.kontakt {
margin: 0 auto;
margin-top: 30px;
width: 60%;
padding: 0px;
background-color:#ededed;
color: #787878;
border-radius: 5px;
}

.content {
margin: 40px;
padding: 20px;
}

HTML 代码:

<body> 
<nav class="nav-wrapper">
    <ul>
        <li><a href="bildformate.html">Home</a></li>              
        <li class="bildformate"><a href="">Bildformate</a></li>
        <li><a href="">Kontakt</a></li>
    </ul>
</nav>

<div class="home">
    <div class="content">
        <p>Willkommen</p>
    </div>
</div>

<div class="formate">
    <div class="content">
        <p>Bildformate</p>
    </div>
</div>

<div class="kontakt">
    <div class="content">
        <p>Kontakt</p>
    </div>
</div>

【问题讨论】:

  • 你能解释清楚一点吗?加载时,您只能看到 div2(根据 css)。单击“.trigger”后,您应该只看到 div1(根据 js)。那么你看到了什么?
  • 加载时我看到一个 div 显示一些文本。有 3 个按钮,每个按钮显示一个 div。因此,在加载时,一个 div 是可见的,当我单击触发器并希望第一个 div 消失并且第二个 div 出现时。其他两个按钮也是如此。这个例子展示了如果我想显示 div1 会发生什么。然后应该隐藏 div2 和 div3。
  • 请包含 html 代码,这将有很大帮助
  • 我刚刚添加了html代码。
  • "在加载时,我看到一个 div 显示了一些文本。"是模糊的。哪个DIV?什么文字?而且您的 HTML 代码甚至没有带有“触发器”类的元素,因此您的 jQuery 单击处理程序不应该对“触发器”执行任何操作。你说你的 cmets 中有三个按钮,但我在你的 HTML 中没有看到一个按钮......

标签: jquery html css dom


【解决方案1】:

好的,您的链接发现了问题,&lt;a.. 标签将其href 属性设置为'',这会导致页面为您重新加载。

如果您将它们更改为 &lt;a href="#" ...,则它不会重新加载。您所说的重置/闪存是页面重新加载的结果,从而使一切恢复到原始状态。

为了测试,我只写了这一行

$("a").attr("href", "#");

但是,您应该手动将所有 href 属性更改为 # 值。

【讨论】:

  • 好的!那行得通。我完全忘记了链接。我的意思是我不再需要它们了。感谢您的帮助! :)
【解决方案2】:

您似乎在显示和隐藏某些 div 时遇到了一些问题。
这是显示和隐藏示例:

var toggle = false;
$('#press').click(function() { //Our button and on press
  if (toggle) { //check if its hidden
    $('.first').show();
    toggle = false;
  } else {
    $('.first').hide();
    toggle = true;
  }
});
.first {
  border: 2px solid red;
  background: pink;
}
.second {
  border: 2px solid blue;
  background: teal;
}
.third {
  border: 2px dotted green;
  background-color: lime;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="press">Show</button>
<div class="first">This is the first div</div>
<div class="second">Second div here</div>
<div class="third">etc</div>

如果你想要更少的代码,你可以简单地切换它:

$('#press').click(function() {
  //when pressed
  $('.first').toggle(); // show and hide
});
.first {
  background-color: pink;
  border: 2px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="press">Toggle instead</button>
<div class="first">This is the first example</div>
<div class="second">Just a placeholder</div>

【讨论】:

  • 这是我尝试过的,但第二个差异只是闪烁了一秒钟,然后 tehn 又消失了。
猜你喜欢
  • 1970-01-01
  • 2016-02-02
  • 1970-01-01
  • 1970-01-01
  • 2016-05-21
  • 2013-04-18
  • 2013-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多