2012-07-08 130 views
2

有一堆字母按鈕的代碼如下:如何關閉字母按鈕?

<?php 
    $a = range("A","Z"); 
?> 

<table id="answerSection"> 
    <tr> 

<?php 
    $i = 1; 
    foreach($a as $key => $val){ 
     if($i%7 == 1) echo"<tr><td>"; 
     echo"<input type=\"button\" onclick=\"btnclick(this);\" value=\"$val\" id=\"answer".$val."\" name=\"answer".$val."Name\" class=\"answerBtns answers answerBtnsOff\">";  
     if($i%7 == 0) echo"</td></tr>"; 
     $i++; 
    } 
?> 
    </tr> 
</table> 

現在下面的代碼能夠打開接聽按鈕:

$('#answer'+btn).addClass("answerBtnsOn"); 

但我想要做的就是能夠打開一些接聽按鈕並關閉其他接聽按鈕。

例如,如果答案是A,那麼我希望按鈕「A」打開上面的代碼行,但我希望所有其他字母按鈕關閉。我怎樣才能關閉其他字母按鈕?

這裏的代碼將關閉字母按鈕addClass("answerBtnsOff");

UPDATE:

我有一個小問題,以及。如果「答案」是A,那麼字母按鈕「A」被打開,這很好,但如果答案是「BD」,則它應該打開字母按鈕「B」和「D」,但是它不會「打開任何按鈕。有人知道這是爲什麼嗎?

回答

0

嘗試下面的選擇組合:

$('#answer'+btn1+', #answer'+btn2).addClass("answerBtnsOn").removeClass("answerBtnsOff"); 
$('[id^="answer"]').not('#answer'+btn1+', #answer'+btn2).addClass("answerBtnsOff").removeClass("answerBtnsOff"); 
+0

這個組合沒有起作用,什麼都沒有發生 – user1490145 2012-07-08 01:18:44

+0

看看編輯後的代碼是否工作...否則請在http: //jsfiddle.net – bPratik 2012-07-08 01:23:18

+0

我不會將整個代碼放在小提琴中,因爲有很多php代碼可以讓應用程序完全工作,並且php不能在小提琴中工作。你的代碼只適用於2個按鈕,還是假定適用於所有字母按鈕?因爲我得到一個錯誤,說明btn1是未定義的 – user1490145 2012-07-08 01:27:51

0

恩,這可能太簡單了,但是你可以先把它們全都關掉,然​​後再打開選定的那個?

編輯:

嘗試這種情況:

$(".answers").addClass("answerBtnsOff"); 
$('#answer'+btn).addClass("answerBtnsOn"); 
+0

我會嘗試,即時猜測代碼是這樣的:( 'answerBtns ')'$ removeClass(' answerBtnsOn ')找到(' #答案'。 + BTN).addClass( 「answerBtnsOn」);'? – user1490145 2012-07-08 01:12:58

+0

嗨,我試過了你的編輯,但它並沒有關掉答案按鈕,還有其他想法能夠關閉按鈕嗎?我也試過$(「。answerBtns」)。addClass(「answerBtnsOff」);但這沒有效果 – user1490145 2012-07-08 01:29:00

+0

沒關係,想出瞭如何將它們全部關閉然後重新打開,這是代碼:\t \t'$(「。answerBtns」)。removeClass(「answerBtnsOn」); \t \t $('#answer'+ btn).addClass(「answerBtnsOn」);' – user1490145 2012-07-08 01:41:13

2

一般模式。將所有的按鈕復位到關閉狀態和然後只啓用所需的按鈕。

// reset all answer buttons to the off state 
// remove any on/off classes 
$("#answerSection").find("button").removeClass("answerBtnsOff").removeClass("answerBtnsOn"); 

// set all buttons to off 
$("#answerSection").find("button").addClass("answerBtnsOff"); 

// now turn on only the buttons that are valid 
$("#answerA").removeClass("answerBtnsOff").addClass("answerBtnsOn"); 
$("#answerB").removeClass("answerBtnsOff").addClass("answerBtnsOn"); 
+0

看着你的例子我設法關閉所有按鈕,然後打開選定的按鈕。你可以請看看我的問題的更新,當有多個答案時,我有一個小問題 – user1490145 2012-07-08 01:40:39

+0

我已經更新了代碼示例的第三部分'/ /現在只打開有效的按鈕,它顯示如何只啓用所需的按鈕。 – 2012-07-08 01:43:05

+0

不,我的意思是如果答案是「B」,那麼它會選擇按鈕「B」,這很好,但是如果有多個答案,比如「BE」,那麼它會轉動所有的按鈕,但它不會轉動在按鈕B和E上,如果有多個答案,我該如何開啓按鈕?它可以是任何多重答案,可以是「A D」或「C F H」或甚至「A B C R T」。它只打開一個按鈕,如果它是一個單一的答案 – user1490145 2012-07-08 01:47:58

1

關於您的更新,如果我正確理解你,你有一串空格分隔的答案。如果是這樣的情況下,該代碼應當予以受理:

var answers = btn.split(" "); 
var answer_selector = '#answer'+answers.join(",#answer"); 
$(".answerBtns").removeClass("answerBtnsOn"); 
$(answer_selector).addClass("answerBtnsOn");