2011-04-20 51 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的解决方案。