按钮上的简单onclick功能不起作用

时间:2013-02-15 14:01:00

标签: javascript jquery css

我正在尝试在点击它时更改按钮的类。为什么不是我的工作: 见我的fiddle

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');
}
谢谢你!

6 个答案:

答案 0 :(得分:5)

你正在使用jQuery,删除内联JS并以正确的方式执行:

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

FIDDLE

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

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

答案 1 :(得分:4)

<button id="repeatSun" data-bind="checked: repeatSun" onclick="changeStyle(this)"><span> Sun </span></button> 

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

或者,更好的方法是使用jQuery添加click event handlers

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

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

$(".changestyle").click(function(){
   $(".changestyle").removeClass('active');
   $(this).addClass('active');
});

答案 2 :(得分: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/>

从类活动

中的css中删除颜色中的额外哈希(#)
.active {
    color: #fff;
    background: #02AEFF;
}

并编写脚本

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

jsfiddle

答案 3 :(得分:1)

您需要传递按钮。

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

在HTML中:

<button id="repeatSun" data-bind="checked: repeatSun" onclick="changeStyle(this)"><span> Sun </span></button> 

答案 4 :(得分: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');
});

答案 5 :(得分:1)

试试这个:

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

在document.ready()

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

DEMO