处理多个切换

2024-05-02

我陷入了一个toggle() 噩梦,终于寻求帮助。

我想要的很简单,我有三个链接:

a.showcountries.bronze
a.showcountries.silver
a.showcountries.gold

和三个盒子:

.countries.bronze
.countries.silver
.countries.gold

你可能已经明白我想做什么了。所有框都是隐藏的,购买默认值,当我单击青铜时,它会向下滑动青铜,再次单击它时,它会向上滑动,依此类推。我遇到的问题是所有三个框占据页面上的相同空间,因此我一次只能打开一个框。所以我单击青铜,向下滑动青铜框,如果我然后单击银色,它应该向上滑动,而银色框应该向下滑动......

$('a.showcountries.bronze').toggle(
        function(){
            $('.countries.silver, .countries.gold').slideUp();
            $('.countries.bronze').slideDown();
        },
        function(){
            $('.countries.bronze').slideUp();
        }
    );
    $('a.showcountries.silver').toggle(
        function(){
            $('.countries.bronze, .countries.gold').slideUp();
            $('.countries.silver').slideDown();
        },
        function(){
            $('.countries.silver').slideUp();
        }
    );
    $('a.showcountries.gold').toggle(
        function(){
            $('.countries.silver, .countries.bronze').slideUp();
            $('.countries.gold').slideDown();
        },
        function(){
            $('.countries.gold').slideUp();
        }
    );  

我正在努力让转换正常工作,因为切换似乎不同步,有时我最终不得不在执行任何操作之前单击链接两次。我也确信有一个使用更少代码的解决方案。我确实尝试检测该类并将其传递给一个通用函数来完成所有这些操作,但无法让它发挥作用。


toggle()作为一个事件,它会记住上一次单击并在下一次单击时运行备用功能。您最好使用单击事件并检查可见性。像这样的东西可能更适合你:

$(".showcountries").click(function () {
    var cls = this.className.match(/gold|silver|bronze/),
        box = $(".countries."+cls[0]);

    // slideUp() on all .countries elements
    $(".countries").not(box).slideUp();

    box.slideToggle();
});

工作演示:http://jsfiddle.net/kSrvZ/1 http://jsfiddle.net/kSrvZ/1(感谢一江建议滑动切换() http://api.jquery.com/slideToggle/聊天时)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

处理多个切换 的相关文章

  • 使用jquery调用AS3外部接口

    我正在使用ExternalInterface 调用嵌入在html 页面中的Flash 应用程序 以下代码工作正常 我正在使用按钮进行测试 document ready function button click function var a
  • 意外的令牌:尝试解析 JSON 字符串时

    我正在尝试解析这个 JSON 字符串 RESULTS name Thessaloniki GR type Sailing l sailing weather beach Porto 20Carras 20Marina 45904 name
  • 将 JSON 属性绑定到表单

    我有一个 JSON 对象和一个
  • JQuery UI:将长元素放在光标位置而不是元素的中间

    我有一些很长的可拖动元素 可以将它们放入背景表的所有单元格中 当我开始拖动此类元素并将其悬停在可放置容器 表格的单元格 上时 了解元素将被放置到何处的 热点 点是其自身的中间 不幸的是 我的元素的中间通常不可见 并且将元素放在正确的位置是没
  • Select2 有 10.000 多个元素时打开速度很慢

    我正在使用 Select2 来填充下拉菜单 Select2如果底层选择有相当数量的项目 则打开下拉菜单时会很慢 我的下拉列表中有超过 10 000 个元素 这是我的代码 ajax url Companies GetCompanies met
  • 如何修复 IE6 上的不透明度

    如何修复 IE6 上的不透明度 此代码不适用于 IE6 filter alpha opacity 50 moz opacity 0 5 khtml opacity 0 5 opacity 0 5 还有这段代码 description ani
  • jQuery ajax 上的 Qunit 单元测试错误

    我已经为 ajax 起诉 Qunit 编写了单元测试 但出现了类似的错误 Error assertion outside test context was success http test loc assets test widget a
  • 使用 jquery 单击或更改广播上的事件

    我的页面中有一些收音机 我想在检查的收音机发生变化时执行一些操作 但是代码在 IE 中不起作用 input radio change 在谷歌搜索后 人们建议使用click反而 但这不起作用 这是示例代码
  • 仅动态包含 javascript 文件一次

    我正在编写一个 javascript 函数 该函数用于包含外部 JS 文件 但仅一次 我需要这样一个函数的原因是 当通过 AJAX 加载某些内容时会调用它 并且我需要对该内容运行特定于页面的代码 不 只需使用 live不会覆盖它 这是我的尝
  • IE6刷新时内存泄漏?

    我每隔几秒钟重新加载一个页面以从服务器获取更新 该页面可以打开并且这种情况可能永远发生 我猜测 特别是因为该浏览器位于未关闭的远程服务器上 我这样做 setTimeout function location href location hr
  • jQuery 位置 DIV 固定在滚动顶部

    我有一个相当长的页面 在布局的菜单中 有一个弹出菜单 我希望菜单的弹出部分显示在页面顶部 即使用户已将菜单栏滚动到视图之外 这是菜单的 HTML div div Compare up to 3 cards side by side Clic
  • 将删除和箭头键添加到正则表达式中

    我正在执行日期验证 现在我正在执行该用户只能输入numbers and backspace所以现在我想在正则表达式中添加 2 个键 我想添加delete and arrow keys那么我应该在正则表达式中做什么改变 这是我的代码
  • 使用 setAttribute() 添加“onclick”函数

    为什么以下不起作用 显然该功能尚未添加 function activatetypeinput event devtype The function is called but it doesn t set the attribute var
  • 根据复选框和数据元素隐藏/显示表格行

    我想隐藏表中的行 因为我选中了复选框并且该数据元素在表中不正确 另一个实验 我还可以使用数据元素进行排序并按下拉列表排序 查看 tr 标签 价格 名称 评级 吗 div class filter list div
  • 限制可选 DOM 复选框

    我试图限制用户可以选择的复选框数量 这些复选框是为数组中的每个项目生成的 DOM 输入对象 我目前对此没有运气 因此非常感谢任何帮助 谢谢 在这里小提琴 http jsfiddle net vVxM2 222 http jsfiddle n
  • 如何向 jquery-file-upload basic-plugin 添加取消上传按钮

    我正在使用 jquery file upload 和 Rails 4 我从https github com tors jquery fileupload rails paperclip example https github com to
  • 确定元素是在页面折叠上方还是下方

    我有一些页面有多个输入框 用户可以在其中输入文本 在单击 下一步 按钮之前 需要填写其中一些内容 我弹出验证错误供用户查看 但是如果问题不在页面上 我希望页面滚动到它 而不是他们必须搜索丢失 错误的字段 我有一个滚动到位 但我无法确定要滚动
  • 如何更改自动完成中的结果过滤器?

    我不想进行字面匹配 而是想通过正则表达式选择结果 我可以覆盖自动完成的默认行为来完成此任务还是需要替代结构 有一个内置的方法可以做到这一点 只需提供一个函数source http jqueryui com demos autocomplet
  • 淘汰赛绑定,每个都可进行自定义

    我这里有一个情况 用于淘汰每个带有定制的绑定 这是我的代码 div div table tbody tr td td td td tr tbody table div div
  • 使用日期字符串数组在引导日期选择器中设置禁用月份不起作用

    我有一个日期选择器 其配置如下 HTML div class input group date div

随机推荐