【问题标题】:Dynamic class toggle with switch and label带开关和标签的动态类切换
【发布时间】:2015-03-22 22:07:01
【问题描述】:

我正在考虑如何在按钮单击时动态切换类的开/关,并向该按钮添加一个标签,解释切换按钮将改变什么。看起来像这样的东西。

                _________
Power          | ON/OFF  |
                _________
Lights         | ON/OFF  |

我想让在代码端添加这些按钮尽可能简单,所以我想简单地使用类的“数据”属性和该按钮的标签。像这样。

 /* Class Toggled Attr */         /* Switch label */
<div data-toggle-class="lights-on-off" data-toggle-label="Lights">

</div>

因此,使用 jQuery 应该很容易获得标签 attr 和 class attr 并将其与开关、标签和切换开关一起相应地添加到 DOM 中。为了使这更容易理解,这是一种有助于更好理解的非工作方式。

                       /*label*/  /*class*/
<div data-toggle-witch="Lights lights-on-off">

</div>

上面的方法使用标签分隔符选择器获取每个标签和类,同时仍然在一个属性值中,尽管使用这种方法我不能添加多个切换开关,因为它在一个元素上无效 2 个相同的属性。关于我应该如何做到这一点的任何想法?

【问题讨论】:

  • 请显示您尝试过的代码。
  • 我什么都没尝试。只是想想办法做到这一点。
  • 查看我的演示以获取解决方案并评分

标签: jquery class switch-statement toggle


【解决方案1】:

HTML

<input type= "text" id="tbox" />
<input type="button" class="btn btn-danger" id="btn" value="add buttons" />

    <div id="container"></div>

CSS

.active{background:#0f0!important;}
    button.btn{margin:10px}
.ui-input-text.ui-body-inherit.ui-corner-all.ui-shadow-inset {
width: 50%;
float: left;
}
input#btn {
margin: 6px;
}
div#container {
width: 100%;
float: left;
}

JQUERY

$('#btn').on('click',function(){
    if( $('#tbox').val()!=""){
var tboxValue=$('#tbox').val();
 var btn = $('<button type="button"  class="btn" data-value="'+tboxValue+'">'+tboxValue+' OFF</button>');
$(btn).appendTo('#container');
  $('#tbox').val('');
    }
})




$("#container").on('click','.btn',function(){
  var innerHtml=$(this).attr('data-value');
    if($(this).hasClass('active')){ 
     $(this).html(innerHtml+" OFF");
     $(this).removeClass('active');
    } else{
    $(this).html(innerHtml+" ON");
    $(this).addClass('active');

    }

});

试试这个演示它有动态按钮和开关功能

http://jsfiddle.net/nadeemmnn2007/oer4L8s2/

【讨论】:

    【解决方案2】:

    这里也适用于切换多个按钮的解决方案 HTML

     <button type="button" class="btn" data-value="power">power OFF</button>
     <button type="button" class="btn" data-value="light">light OFF</button>
    

    CSS

    .active{background:#0f0!important}
    

    JQUERY

    var items= $('.btn');
    
    $.each(items,function(i,v){ 
        $(v).on("click",function(){
        var innerHtml=$(this).attr('data-value');
        if($(this).hasClass('active')){ 
             $(this).removeClass('active');
             $(this).html(innerHtml+" OFF");
        } else{
             $(this).toggleClass('active');
             $(this).html(innerHtml+" ON");
            }
        });
    });
    

    演示小提琴

    http://jsfiddle.net/nadeemmnn2007/td935pum/4/

    注意添加jquery和bootstrap

    【讨论】:

    • 这些按钮实际上不会存在于 HTML 文件 DOM 中,它们稍后将使用 jQuery 基于元素数据标签和类属性生成,这就是我只想使用属性的原因。我想我忘了提。
    • 你如何在点击某物时生成按钮以及按钮数量
    • 点击其他地方的 div 时,会运行一个函数并查找所点击元素的属性。它将查找开关的标签和类(数据属性),并将开关与标签一起附加到其他地方的另一个 div 上。它可能是许多具有不同标签和类别的开关。
    猜你喜欢
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多