2011-08-09 82 views
0

它又是我:) 一些有幫助的成員幫助我得到了一個腳本工作,但我遇到了一個磚案,我還想要一個IF語句。它看起來像這樣:我可以把IF語句放在switch case函數中嗎?

$(document).ready(function() { 
    $("input[type='button']").click(function() { 
     switch(this.id) { 
     case:'buttonone': 
       if($('#one').attr('readonly')) { 

       $("#changeone").attr('value', 'Save'); 
       $('#one').attr('readonly', false); 
       $('#one').addClass('focusField'); 
       $("#questiononetext").html("When do you want to go out?"); 

} else { 

       $("#changeone").attr('value', 'Change'); 
       $('#one').attr('readonly', true); 
       $('#one').removeClass('focusField'); 
       $("#questiononetext").html("Date: "); 

} break; 
     case 'buttontwo': $("#questiononetext").html("Content changed"); break; 
     case 'buttonthree': $("#content").html("Content changed again"); break; 
     } 
    }); 
}); 

通知CASE之後會發生什麼:buttonone,我試過一個if語句,並且打破了整個腳本。有沒有人有任何想法,爲什麼會發生這種情況?謝謝:)))

+0

就像一個旁註一樣,你可以使用像'data-key = value'這樣的屬性,認爲它可以幫助你減少代碼,並且不必要地使用開關。 – yoda

+0

你好yoda,我不確定你的意思,因爲我是一個新手:)但是,我會,但要做一個谷歌搜索找出。謝謝! – pufAmuf

+0

如果你澄清你假裝用這個代碼做什麼,它可能會有助於某人帶來溶劑(粘貼一些標記)。 – yoda

回答

1

不確定是「case:buttonone」中的「case」之後的額外冒號。請檢查

+0

它是冒號。我沒有注意到,謝謝你的影子! :)...編輯:我可以在5分鐘內接受你的問題,所以當我從午餐回來時,我會這樣做。再次感謝您和其他所有查看我的代碼的人,我真的很感謝它:) – pufAmuf

4

您的switch語句是多餘的,它存在的唯一原因是您對多個按鈕使用相同的click處理程序,但它們沒有任何共同之處。

相反,你應該有3個click處理程序:

$('#buttonone').click(function(){ 
    ... 
}); 

$('#buttontwo').click(function(){ 
    ... 
}); 

$('#buttonthree').click(function(){ 
    ... 
}); 

而且在buttonone的處理程序if說法是完全合法的。

+0

嗨傑米,感謝您的答案,但我離開這個功能有一個更緊湊的代碼。如果,但是你認爲這是一個更好的解決方案,請讓我知道,我會用它來代替:) – pufAmuf

+0

我認爲@Jamiec建議更易讀,更不容易出錯。如果你重視這些緊湊性,那麼肯定,但你只保存幾行,你不會用盡空間... – JJJ

+0

我同意傑米這是一個更好的解決方案,因爲每個元素會有它是自己的專用處理程序,如果之後添加了不使用此「全局」處理程序的額外按鈕,則沒有碰撞風險。 –

1

我認爲如果CASE內沒有問題。問題可能是$('#one').attr('readonly')。在這裏使用可以使用data屬性。我測試$('#one').attr('readonly')不起作用。

+0

謝謝阿卜杜拉,但問題是'case':)後的冒號 – pufAmuf

相關問題