0

单击按钮时,我正在尝试更改按钮的类别。为什么我的不工作:看我的小提琴

HTML:

<button id="repeatMon" onclick="changeStyle()"><span> Mon </span></button> 
<br/>
<button id="repeatTues" data-bind="checked: repeatTues" onclick="changeStyle()"><span> Tues </span></button> 
<br/>
<button id="repeatWeds" data-bind="checked: repeatWeds" onclick="changeStyle()"><span> Weds </span></button> 
<br/>
<button id="repeatThurs" data-bind="checked: repeatThurs" onclick="changeStyle()"><span> Thurs </span></button> 
<br/>
<button id="repeatFri" data-bind="checked: repeatFri" onclick="changeStyle()"><span> Fri </span></button> 
<br/>
<button id="repeatSat" data-bind="checked: repeatSat" onclick="changeStyle()"><span> Sat </span></button> 
<br/>
<button id="repeatSun" data-bind="checked: repeatSun" onclick="changeStyle()"><span> Sun </span></button> 
<br/>

CSS:

button{
    width: 60px;
    height: 35px;
    border-radius: 0px;
    color: #cfcfcf;
    background: #0a4a58;
}

.active{
    color: #fff;
    background: ##02AEFF;
}

jQuery:

function changeStyle(){
    $(this).toggleClass('active');
}

谢谢你!

4

6 回答 6

5

您正在使用 jQuery,删除内联 JS 并以正确的方式进行操作:

$('[id^="repeat"]').on('click', function() {
    $(this).toggleClass('active');
});

小提琴

要同时在一个按钮上切换活动状态:

$('[id^="repeat"]').on('click', function() {
    $(this).toggleClass('active').siblings().removeClass('active');
});
于 2013-02-15T14:02:49.430 回答
4
<button id="repeatSun" data-bind="checked: repeatSun" onclick="changeStyle(this)"><span> Sun </span></button> 

function changeStyle(btn){
    $(btn).toggleClass('active');
}

或者,更好的方法是使用 jQuery添加单击事件处理程序。

将相同的类添加到所有按钮并将单击事件处理程序应用于该类:

<button id="repeatSun" data-bind="checked: repeatSun" class="changestyle"><span> Sun </span></button>

$(".changestyle").click(function(){
   $(".changestyle").removeClass('active');
   $(this).addClass('active');
});
于 2013-02-15T14:02:20.397 回答
2

您正在使用 jquery,因此您不必重复自己。从按钮中删除onclick并使用 jquery

<button id="repeatMon"><span> Mon </span></button> <br/>
<button id="repeatTues" data-bind="checked: repeatTues"><span> Tues </span></button><br/>
<button id="repeatWeds" data-bind="checked: repeatWeds"><span> Weds </span></button><br/>
<button id="repeatThurs" data-bind="checked: repeatThurs"><span> Thurs </span></button><br/>
<button id="repeatFri" data-bind="checked: repeatFri"><span> Fri </span></button><br/>
<button id="repeatSat" data-bind="checked: repeatSat"><span> Sat </span></button><br/>
<button id="repeatSun" data-bind="checked: repeatSun"><span> Sun </span></button><br/>

在 class active 中从 css 中的颜色中删除多余的哈希 (#)

.active {
    color: #fff;
    background: #02AEFF;
}

并编写脚本

$(function() {
    var buttons = $('button[id^="repeat"]');
    buttons.click(function() {
        buttons.removeClass('active');
        $(this).addClass('active');
    });
});

jsfiddle

于 2013-02-15T14:12:18.473 回答
1

您需要传递按钮。

function changeStyle(e){
    $(e).toggleClass('active');
}

在 HTML 中:

<button id="repeatSun" data-bind="checked: repeatSun" onclick="changeStyle(this)"><span> Sun </span></button> 
于 2013-02-15T14:03:21.143 回答
1

像这样的东西怎么样:

$("button").click(function () {
    $(this).toggleClass('active');
});

http://jsfiddle.net/VUmza/26/

编辑:一次只有一个按钮。

http://jsfiddle.net/VUmza/39/

$("button").click(function () {
    $( "button" ).each(function() {
      $(this).removeClass("active");
    });

    $(this).toggleClass('active');
});
于 2013-02-15T14:03:33.890 回答
1

尝试这个:

<button id="repeatMon" class="clickable"><span> Mon </span></button> 

Jquery 里面的 document.ready()

$('.clickable').click(function(){
    $(this).toggleClass('active');
});

演示

于 2013-02-15T14:03:52.997 回答