jquery .hide() 和 .show()

标签 jquery html css web

        $(".navItemWetten").click(function(){
            $(".navUnderItemWetten").hide();
        });

     <nav>
        <?php
            //Falls man eingeloggt ist
            if(isset($_SESSION['email'])){
        ?>
            <a href="logout.php" ><button class="logOutBtn" type="button">Log Out</button></a>
            <h1><p>Backend</p></h1><br /> <br />
            <a><li class="navItemWetten" >Wetten</li></a>
            <a><li class="navUnderItemWetten" >Super League</li></a>
        <?php
            } else {
        ?>
            <h1><p>Backend</p></h1>
        <?php
            }
        ?>
    </nav>

我只想,当我单击类 navItemWetten 时,类 navUnderItemWetten 被隐藏。我已经包含了 ajax

最佳答案

如果我理解正确,这不适用于通过 AJAX 加载的元素。您需要使用委托(delegate)。详细地说,由 ajax 调用生成或重新创建的元素将丢失任何附加到它们的事件,除非它们是 delegated。 :

$("body").on("click", ".navItemWetten", function(){
    $(".navUnderItemWetten").hide();
});

然后删除 <a> 里面的按钮.也请不要嵌套<p> <hX> 内部标签。

解决方案

  1. 整个布局是错误的。 LI 只能包含在 <ul> 中并且你不应该在 <a> 中放置任何 block 级元素标签。
  2. 您必须将代码包含在文档就绪函数中。
  3. 您必须使用 .toggle()而不是 .hide().show() .

片段

// You must include the code inside document ready function.
$(function () {
    $(".navItemWetten").click(function(){
        $(".navUnderItemWetten").toggle();
    });
});
<!-- The whole layout is wrong. The LI can be contained only inside <ul> and you should not put any block level elemenets inside <a> tag. -->
<nav>
    <ul>
        <li class="navItemWetten" ><a>Wetten</a></li>
        <li class="navUnderItemWetten" ><a>Super League</a></li>
    </ul>
</nav> 

关于jquery .hide() 和 .show(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32205136/

相关文章:

javascript - scrollTop 动画后滚动将不起作用

jquery - slider 边框宽度的 CSS 冲突

html - CSS h1 Blob /点边框

jquery - 如何使用 jquery 删除不存在 id 之上的特定类的元素

javascript - 禁用选择 HTML 元素内的文本

javascript - 点击链接后 Jquery 类被删除,但第二次点击仍然可以识别

javascript - iPad 上不显示下拉菜单

javascript - 如何在传单js中获取缩放事件的经纬度

javascript - 使用 Javascript 删除 div

html - 为什么div之间有空白?