2013-02-26 64 views
0
var item = $(this).attr('class'); 

switch (item) { 
    case 'menu-visie active': 
     soundManager.play('soundLaag1'); 
     break; 

有沒有辦法,我可以刪除案件中的活動。變量的類是menu-visie活動的。但有時候這堂課是菜單可見的。但是,當課堂是菜單可見。該腳本不起作用。開關語句和類

如何設置switch語句。該聲明僅查看菜單 - 視覺類。現在類必須完全一樣

+4

爲什麼不直接測試'如果$(本).hasClass(「menue-visie」)'?這個目標對於讀者來說是很清楚的。 – 2013-02-26 18:09:45

+0

你在同一個'switch'中有其他'case'語句嗎?否則,我不明白爲什麼使用'switch'。 – bfavaretto 2013-02-26 18:11:23

+1

你會有多少箱?只有兩個? – 2013-02-26 18:12:11

回答

4

您應該使用jQuery來處理這些類,而不是手動。例如:

if ($(this).hasClass('menu-visie')) { 
    soundManager.play('soundLaag1'); 
} 

UPDATE 如果你有很多類,我將創建一個對象來存儲他們所有。例如:

var self = this, 
    sounds = { 
     'menu-visie':'soundLaag1', 
     'menu-visie2':'soundLaag2' 
    }; 

$.each(sounds, function(i,n) { 
    if (self.hasClass(i)) { 
    soundManager.play(n); 
    } 
}); 
+0

你好,謝謝你的回答。但我有超過10個不同的選項。這是最好的方式嗎? – 2013-02-26 18:38:31

+0

謝謝!它正在工作:-) – 2013-02-26 19:07:37

1

你可以這樣做:

if($(this).hasClass('menu-visie')) { 
    soundManager.play('soundLaag1'); 
} 
1

我會做這個:

if($(this).hasClass('menu-visie')) { 
    soundManager.play('soundLaag1'); 
} else { 
    //something else. 
} 
0

由於大部分已經提到你應該使用Jquery的方法 「hasClass」。如果你仍然想保持你開關(如果您有許多語句),你可以寫你這樣的代碼:

switch (true) { 
    case $(this).hasClass('menu-visie'): 
     soundManager.play('soundLaag1'); 
     break; 
+0

我認爲這是一個令人不舒服的使用switch語句,因此邏輯表達式的含義是模糊的。 – Kristian 2013-02-26 18:17:11

+0

你可以在這裏辯論真正需要的開關。如果不超過2個,那麼if/else會更合適。使用switch'es真正的表達式總是可以辯論(並且一直)。我寫了這個,因爲標題包含「Switch語句和類」。這是一個替代方案。 – 2013-02-26 18:27:18