【问题标题】:Multiple on/off buttons that need to be scalable需要可扩展的多个开/关按钮
【发布时间】:2013-03-15 18:23:17
【问题描述】:

我一直在搞乱some code(感谢@JohnieHjelm!)我找到了切换按钮。我将它减少到我需要的最低限度并将其包含在我的页面中。效果很好,一键搞定。 The problem comes when there's more than one button。它开始看起来不错,但后来就出错了,正如您在上一个链接中看到的那样:

<div id = 'settings'>
  <p>
    Links: 
    <span class = 'onoff on'>ON</span>
    <span class = 'onoff'>OFF</span>
    </p><br />
  <p>
    Chapters: 
    <span class = 'onoff on'>ON</span>
    <span class = 'onoff'>OFF</span>
  </p>
</div>

$(function(){
    $('#settings .onoff').click(function(){
        $('#settings .onoff').removeClass("on");
        $(this).addClass("on"); 
    });
});

切换按钮起初看起来不错:

但是当点击时,一切都出错了:

现在,我知道我可以调用第二个按钮“onoffb”并为新类(或 id)重复整个 $(function()) 位。它甚至可能适用于 2 或 3 个按钮,但我完全不希望重复那一堆代码,甚至在可能有 10 个或更多这样的按钮时更不喜欢。

我还不擅长 javascript,我想不出解决这个问题的方法。我应该调查什么?我需要一些关于在哪里继续寻找这个特定问题的指针。我正在考虑为每个按钮添加一个 id,并以某种方式从 jquery 中检索它并仅修改它,但无论如何我都无法做到。

【问题讨论】:

    标签: jquery css button toggle


    【解决方案1】:

    下面的代码应该可以解决问题:

    $(function(){
        $('#settings .onoff').click(function(){
            $(this).siblings().removeClass("on");
            $(this).addClass("on"); 
        });
    });
    

    问题是您选择了所有带有$("#settings .onoff).onoff 按钮,而您只需要兄弟姐妹(同一容器中的按钮)

    在这里查看我的 jsfiddle:http://jsfiddle.net/KwKjd/4/

    【讨论】:

    • 你可以像这样链接函数:$(this).addClass("on").siblings().removeClass("on");
    【解决方案2】:

    这可能是微不足道的,可能无法回答问题,因为我不确定你在问什么,但你不能只在 javascript 中创建一个方法并拥有多个按钮参数。

    有点像(伪代码)

    function onoff(var Numberofbuttons)
    {
    Insert code here
    }
    

    所以如果你想制作 x 个按钮,你可以使用 for 循环?

    (来自 C# 的角度)

    【讨论】:

    • 我想过做这样的事情,但我越来越喜欢 jquery 的工作方式,不需要在你的 html 中使用 onclick = "onoff('thisid')" 抛出 javascript 代码
    【解决方案3】:

    只是因为你听起来像你想学习并且只是被指出而不是给出答案,所以考虑使用“this”而不是特定的类。

    这会说'当它被点击时,将它设置为开/关等'......

    【讨论】:

    • 我明白了,虽然 user2019515 给了我一个足够好的答案,但你的意思是这样的:使用&lt;p&gt; 的 id(我的代码中没有设置)或&lt;div&gt; ,与this 和它的孩子一起工作,所以只有&lt;p&gt;&lt;div&gt; 会受到影响?
    • 嗯,'this' 一开始可能会让人感到困惑,但本质上,通过使用 this,这意味着'无论我刚刚点击了什么。因此,在您需要影响通用事物的函数中,例如一堆关闭/打开按钮,通过使用“this”,您可以根据需要添加任意数量的按钮/元素等,而不必返回并修改实际的 jquery/ javascript。
    猜你喜欢
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-18
    • 1970-01-01
    • 2012-08-03
    相关资源
    最近更新 更多