2011-04-20 68 views
1

我有一個switch語句,我必須忽略一些東西,因爲我不明白爲什麼它不起作用。爲什麼我的Javascript switch語句不工作?

$('.handles a').click(function() { 
    var li = $(this).parent(); 

    switch ($(li).data('handle')) { 
    case 'minimize': 
     $('.window', li).hide(); 
     break; 
    } 

    return false; 
}); 

還設置一個小提琴@http://jsfiddle.net/9aHvx/4/(點擊最小值)

應該隱藏.window格,但它並不:(

+1

尋找隱藏在DIV一個DIV或待? – 2011-04-20 22:16:34

+0

OMG我吮吸。你們都搖滾。沒關係。我==愚蠢。現在去睡覺:P感謝指出明顯的:) *鞠躬他的頭羞辱* – PeeHaa 2011-04-20 22:21:27

+1

累!=吸吮 – 2011-04-20 22:28:05

回答

0

ķ對不起,我浪費了你的時間。

我剛剛做了一個主要的噓聲! :P

$('.handles a').click(function() { 

    var snippet = $(this).parents('.snippet'); 

    switch($(this).parent().data('handle')) { 
     case 'minimize': 
     $('.window', snippet).hide(); 
     break; 
    } 

    return false; 
    }); 

感謝所有:)

3

此行$('.window', li).hide();是錯誤的。如果你想目標.window和李,你需要它,就像您對CSS寫:

$('.window, li').hide(); 

編輯:小提琴http://jsfiddle.net/9aHvx/7/

+0

這做的事情完全不同於他所要求的。 – Jakob 2011-04-20 22:16:12

+0

Nopez。李是一個變種。 $('。window',li)表示li元素中的.window – PeeHaa 2011-04-20 22:16:17

+1

在這種情況下,它會失敗,因爲div.window不在li中。 – shanethehat 2011-04-20 22:17:11

1

你的選擇是關閉

$('.handles a').click(function() { 
    var li = $(this).parent(); 
    var x = $(li).data('handle'); 
    switch (x) { 
    case 'minimize': 
     alert(x); 
     $('.window').hide(); 
     break; 
    } 

    return false; 
}); 

jsFiddle link

+0

嗯...所以我不能在switch語句中使用jquery選擇器?這很奇怪,不是嗎?爲什麼呢,有人呢? – PeeHaa 2011-04-20 22:18:15

+1

我的意思是$('。window',li)部分應該是$('。window,li')對不起,如果我不清楚。我只是將該值存儲到一個變量中,以便我可以使用alert輕鬆調試它。 – 2011-04-20 22:25:17

1

.window DIV不是li元素裏面,所以您不必到li變量傳遞的參數:

$('.window').hide(); 
2

使用語法:

$('.window', li).hide(); 

表示您搜索類別爲window的元素,從節點li開始。窗口類不是li的後代的對象將不匹配。

在你的標記中,情況正是如此。你應該一起跳過第二個參數。或者,你可以重新排列你的標記(但這可能不是你想要的)。

轉到爲:

$('.window').hide(); 

編輯:這是,如果你只想隱藏窗口元素。如果你還想隱藏李的話,那麼請去找shanethehat的解決方案。