2012-09-07 47 views
-1

請看看這個小提琴奇怪的javascript問題

http://jsfiddle.net/Qstuw/7/

第一個答案是默認選擇,當你進入到頁面。嘗試選擇第二個答案。然後返回到1st並再次選擇它。我不明白我錯過了什麼,但我不能再選擇第一個答案。任何建議?

UPDATE

基於第一個答案:

真正的答案一定是答案之間 「切換」。就像這樣。當您點擊某個活動按鈕時,必須啓用所有其他按鈕,並且必須禁用您點擊的按鈕。綠色邊框僅限於您點擊的答案

+0

你從未設置過任何東西;你只能切換「單向」。 –

+0

您需要再次將SelectedAnswerBtn設置爲其新元素。並且SelectedAnswerBtn當前具有緩存元素.. –

回答

1

您沒有重新聲明該按鈕。應該讓你更接近

AnswerDiv.on("click", ".NotSelectedAnswer", function(){ 
    $(this).button("disable"); 

    SelectedAnswerBtn.removeClass("SelectedAnswer").addClass("NotSelectedAnswer").button("enable"); 
    $("div.Answer[data-id="+SelectedAnswerBtn.data("id")+"]").toggleClass("SelectedDiv"); 
    $("div.Answer[data-id="+$(this).data("id")+"]").toggleClass("SelectedDiv"); 

    NotSelectedAnswerBtn=$(".NotSelectedAnswer"); 
    NotSelectedAnswerBtn.button('enable'); 
SelectedAnswerBtn=$(".SelectedAnswer"); 
AnswerDiv=$("div.Answer"); 
}) 
+0

鏈接到小提琴? – heron

+3

@epic_syntax你如何把握它的要點並給它一個鏡頭?一旦你在* current *狀態得到按鈕,這是一個單行的改變。 –

+0

不,這絕對不是我所需要的。真正的答案必須在答案之間「切換」。就像這樣。當您點擊某個活動按鈕時,必須啓用所有其他按鈕,並且必須禁用您點擊的按鈕。綠色邊框僅限於您點擊的答案 – heron

2

檢查此UPDATED FIDDLE。我已經做了必要的修改,使其工作。你要緩存的對象而當選擇已經改變

賦予它們新的元素//

AnswerDiv.on("click", ".NotSelectedAnswer", function(){ 
     $(this).button("disable"); 
     NotSelectedAnswerBtn= $(".NotSelectedAnswer"); 
     SelectedAnswerBtn= $(".SelectedAnswer"); 
     SelectedAnswerBtn.removeClass("SelectedAnswer").addClass("NotSelectedAnswer").button("enable"); 
     NotSelectedAnswerBtn.removeClass("NotSelectedAnswer").addClass("SelectedAnswer").button("disable"); 
     $("div.Answer[data-id="+SelectedAnswerBtn.data("id")+"]").toggleClass("SelectedDiv"); 
     $("div.Answer[data-id="+$(this).data("id")+"]").toggleClass("SelectedDiv"); 
    }) 

另外,還要確保你的VAR分配給最初的局部變量..這是一個很好的做法。