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

フィドル

一度に1つのボタンのアクティブ状態を切り替えるには:

$('[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/>

アクティブなクラスの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/

編集:一度に1つのボタンのみ。

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> 

document.ready()内のJquery

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

デモ

于 2013-02-15T14:03:52.997 に答える