JQuery 打开/关闭唯一的抽屉

Posted

技术标签:

【中文标题】JQuery 打开/关闭唯一的抽屉【英文标题】:JQuery Open/Close Unique Drawers 【发布时间】:2013-01-06 11:31:18 【问题描述】:

我正在努力完成对您来说可能很简单的任务。我想要它,所以每次用户单击左侧栏上的一个“患者”时,都会打开一个抽屉。该抽屉将加载到页面上的隐藏 div (display:none) 中。每个 div 的 id 将是患者的姓氏。显然,我包含的小提琴仅出于演示目的而显示所有相同的姓氏。

但问题是我不知道如何为每个患者打开一个独特的抽屉。我想我需要以某种方式在每个患者的 li 上设置一个开关?

另外,如果他们点击列表中的另一位患者,我希望关闭当前打开的抽屉,然后打开他们刚刚点击的抽屉。此外,如果单击关闭按钮,显然也会关闭抽屉。

我有一个抽屉可以处理这个:

 $(".patient").toggle(function()
            $(this)
                $('#drawer').slideDown("slow")

            , function()
                $(this)
                $('#drawer').slideUp("slow")    

            );

但显然这行不通... :(

在小提琴中,它现在正在打开一个标准的“抽屉”。但实际上我希望每个命名 div 的数据以相同的形式加载。不明白的请留言。

这是小提琴:

http://jsfiddle.net/3veht/1/

【问题讨论】:

你试过什么?为什么你需要为每个 div 设置一个唯一的 div,为什么不只是在用户点击名称时动态加载内容? @JohnKoerner 我希望能够动态加载它!我已经尝试了我的小提琴。甚至不知道从哪里开始做这样的独特项目,这就是我问的原因。对不起 【参考方案1】:

在您的 html 中添加一个数据元素来指示 ID,在这种情况下假设为患者 ID:

<li class="patient green" data-patientId="1">Josh Doe<img src="img/next.png"><img class="imgfix" src="img/accept.png"></li>
<li class="patient red" data-patientId="2">John Adams<img src="img/next.png"><img class="imgfix" src="img/cancel.png"></li>

然后在您的 javascript 中,当您加载数据时,您可以使用该 ID 来生成页面请求。我还将切换开关更改为单击并向上滑动前一个,然后向下滑动新的。在小提琴示例中:

 $(".patient").click(function()
     var pat = $(this);
     if ($("#drawer").is(":visible"))
         $("#drawer").slideUp("fast", function () 

            $('#drawer').slideDown("slow")
            $("#drawer").load("/echo/js?js=" + pat.data("patientid"));       
         );
     else   
     
         $('#drawer').slideDown("slow")
         $("#drawer").load("/echo/js?js=" + pat.data("patientid"));
     
 );

更新小提琴:http://jsfiddle.net/3veht/6/

【讨论】:

@JohnKoemer 这太棒了!生成页面请求对我来说可能有点困难。这就是为什么我想使用预加载的隐藏 div。您可以添加生成页面请求吗?数据都是php驱动的 @JohnKoemer 同样,它似乎在小提琴中无法正常工作。单击第一个,然后单击第二个,然后单击第一个。我希望抽屉关闭,然后打开那个人刚刚点击的那个,而不是重新加载打开的抽屉。你介意修一下吗? @greycode 对于 PHP,只需将 /echo/js 替换为返回 html 的 URL。所以你可以简单地做$("#drawer").load("details.php?id-=" $(this).data("patientid")); @JohnKoemer gotcha,我刚刚注意到了。你有没有注意到开场效果不太好?我原来的小提琴也不能很好地工作。奇数 @greycode 查看我更新的代码/小提琴,了解如何正确处理滑动。【参考方案2】:

检查这个小提琴是否更新......

代码改动

 var divud = $(this).text().split(' ')[1];
                $('#drawer').slideDown("slow");
                $('#'+divud).removeClass('hidden');
              $('#'+divud).slideDown("slow");

JSFIDDLE

【讨论】:

以上是关于JQuery 打开/关闭唯一的抽屉的主要内容,如果未能解决你的问题,请参考以下文章

将(打开/关闭)按钮添加到(打开/关闭)导航抽屉的活动

如何使用导航抽屉打开和关闭更改按钮图像

如何在 Flutter 中收听抽屉打开/关闭动画

Vuetify 导航抽屉开始关闭,然后一秒钟后打开

如何默认导航抽屉在移动设备上关闭并在桌面上打开?

如何取消在颤动中打开和关闭导航抽屉的动画?