2013-02-15 99 views
0

我試圖在點擊按鈕時改變按鈕的類別。爲什麼不是我的工作: 看到我fiddle按鈕不起作用的簡單onclick功能

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

謝謝!

+0

'onclick =「changeStyle(this)」'? – Antony 2013-02-15 14:02:20

回答

2

你是全光照g 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

+0

完美!謝謝! – 2013-02-15 14:19:06

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

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

或者更好的方法是添加click event handlers與您的jQuery。

添加同一類所有按鈕和應用點擊事件處理的那類:

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

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

'這是'保留,我想。 – 2013-02-15 14:02:52

+0

@dystroy我認爲說實話,但我不確定。已更新答案的情況下。 – Curt 2013-02-15 14:04:32

+0

謝謝你的回答。第一個不起作用:http://jsfiddle.net/VUmza/33/ – 2013-02-15 14:10:33

5

你使用jQuery,刪除內聯JS和做正確的方法:

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

FIDDLE

要切換活動狀態上的一個按鈕,在時間:

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

謝謝。欣賞。但是,如果我只想每次更換一個課程,我該怎麼辦?即只有一個按鈕可以有切換類? – 2013-02-15 14:14:22

+0

看到我的答案爲 – pbaris 2013-02-15 14:17:07

1

您需要傳遞按鈕。

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

而在HTML:

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

謝謝,但不起作用 - http://jsfiddle.net/VUmza/38/ – 2013-02-15 14:17:40

+0

@DavidVanStaden按鈕上的onclick在哪裏?你需要給'onclick =「changeStyle(this)」'。 – 2013-02-15 14:20:20

+0

@DavidVanStaden這是jsfiddle的問題。檢查了這一點:http://jsfiddle.net/praveenscience/VUmza/42/它的作品! :) – 2013-02-15 14:22:13

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

謝謝。有用。如何一次只啓用一個按鈕才能切換課程... – 2013-02-15 14:15:04

+0

@DavidVanStaden我編輯過我的帖子,一次只切換一個。 – Jako 2013-02-15 14:18:15

+0

謝謝。它效果很好。欣賞你的答案,但不幸的是pbaris的答案更好 – 2013-02-15 14:21:34

1

試試這個:

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

jQuery的內部的document.ready()

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

DEMO