javascript - Div onclick 切换需要点击两次

标签 javascript jquery

我有以下一段 jquery,它在点击时切换一个 div。我的问题是它首先需要点击两次才能显示 div,然后它会按预期切换 div。我究竟做错了什么?感谢您的建议。

    <script type="text/javascript">
    $(function() {
        $( "#clickme" ).click(function(e) {
            e.preventDefault();
            var categories = $("#categories");
            if (!categories.data("loaded")) {
                categories.load("/categories");
                categories.data("loaded", true);
            }
            categories.slideToggle("fast");
        });
    });
    </script>

最佳答案

我认为很可能是因为 #categories div 之前没有被隐藏,而且里面没有内容。因此,当您第一次加载时,它会加载数据,但您会立即执行 slideToggle,这样 div 的状态就会切换到隐藏状态,并且您不再加载,第二次单击实际上它们会再次切换并使其可见。还可以在加载时使用回调并最初隐藏 div。

例如:

#categories{
   display:none;
}

$(function() {
        //if you dont want to specify css then do this first up.
        $("#categories").hide();
        //now your click event
        $( "#clickme" ).click(function(e) {
            e.preventDefault();
            var categories = $("#categories");

           if (categories.data("loaded")) {
               categories.slideToggle("fast");
               return;
           }

           categories.load("/categories", function(){
                categories.data("loaded", true).slideDown("fast");
           });
        });
    });

请注意,slideToggle 会切换 div 的当前状态,如果它可见且没有内容,它仍会在第一次点击时隐藏它

你的问题在这里得到了很好的展示 Demo-Issue

你可以通过 Demo-Fix 来解决这个问题

关于javascript - Div onclick 切换需要点击两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19053851/

相关文章:

javascript - 显示图像的一部分

javascript - 如何使用 ReactJS 显示动态表上每一行的价格?

javascript - 选择后链接输入选项?

java - 如何在进行异步 RPC 时调用 GWT 方法

javascript - 如何跨浏览器查找 HTML 按钮或图像的坐标?

javascript - Socket.io 和多​​维数组?

javascript - 如果字段为空 - 做一件事情,如果不做其他事情(jQuery vs 浏览器字段自动完成)

javascript - Twitter Bootstrap 下拉事件未在触摸设备上触发

jquery - jQuery 宽度动画中的跳跃

javascript - 如何从命令按钮中取消选择 primefaces selectCheckboxMenu 中的所有元素