带有切换/删除类之谜的 jQuery 单选按钮

标签 jquery class radio-button switch-statement

jQuery 有问题,但我不知道为什么。

我有三个像单选按钮一样的 div。第一个 div 的类为“on”,其他 div 的类为“off”。如果我单击“关闭”类,它会更改为“打开”,但这不适用于第一个 div,因为我无法将其恢复为“打开”。只有当他从一开始就“停课”时,这才有效。你能告诉我问题出在哪里吗?

HTML:

<div class="slider-radio-buttons">
                    <div class="on"></div>
                    <div class="off"></div>
                    <div class="off"></div>
                </div>

jQuery:

$(".off").click(function() {
    $(".on").removeClass('on').toggleClass('off');
    $(this).toggleClass('on').removeClass('off');
});

http://jsfiddle.net/UyKzf/2/

最佳答案

由于已经有一些关于代码优化的(冗长的)讨论(仅在用户界面速度下使用),我反对建议比以下更快更简单:

http://jsfiddle.net/TGc7L/2/

$("div.slider-radio-buttons div").on("click", function () 
{
    $(this).removeClass("off").addClass("on").siblings().removeClass("on").addClass("off");
});

选择器仅使用一次。所有其他访问要么是对已知目标元素(使用 $(this)),要么是该元素的同级元素,(我相信)可以使用 siblings()< 更快地访问该元素

http://jsperf.com/cached-vs-siblings/3

enter image description here *注:由于对统计数据一直持怀疑态度,我通过排除初始 jQuery 选择器将性能测试变成了公平的比较。看来使用 siblings() 比迭代 JQuery 集合(在 Chrome 中)要快一点,并且在其他浏览器上的速度大约相同,这一点很容易知道。

我最初的观点基本上是“不要担心用户界面交互的速度,除非出现问题”。无论如何我都会使用上述技术,因为它更易于阅读/维护。您点击鼠标的速度有多快?当然不是每秒 90,000 次:)

关于带有切换/删除类之谜的 jQuery 单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21023819/

相关文章:

c# - Silverlight - 应用程序内的 HTML 标记和 Javascript

c# - 如何通过 C# 获取组中选定的单选按钮?

c++ - 数据类型 inst 转换正确吗?

javascript - 拆分类并将它们与另一个 DIV 进行匹配。查询

java - 调用 equals() 的行中的 NPE

javascript - jQuery:如何为多组单选按钮重复使用相同的功能

php - 我有一个单选按钮需要将信息发送到数据库

javascript - Fullcalendar 手动添加新事件

javascript - 为点击事件选择特定表单的提交按钮

jquery - 如何停止 jquery Accordion - onclick 打开所有 Accordion