为什么我的Javascript switch语句不起作用?

时间:2011-04-20 22:09:39

标签: javascript jquery

我有一个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/(点击Min)

它应该隐藏.window div,但它不会:(

6 个答案:

答案 0 :(得分:3)

此行$('.window', li).hide();错误。如果你想定位.window和li,你需要像css那样编写它:

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

修改:小提琴http://jsfiddle.net/9aHvx/7/

答案 1 :(得分:2)

使用语法:

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

表示从节点window开始搜索类li的元素。

在你的标记中,情况确实如此。你应该一起跳过第二个参数。或者,您可以重新排列标记(但这可能不是您想要的)。

Go for:

li

编辑:如果您只想隐藏窗口元素,那就是这样。如果你想隐藏li的,那么goo for shanethehat的解决方案。

答案 2 :(得分: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

答案 3 :(得分:1)

.window div不在li元素内,因此您不必将li变量作为参数传递:

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

答案 4 :(得分:1)

http://jsfiddle.net/9aHvx/13/

请改用$('.window').hide();,因为<li>内没有<div class="window">

答案 5 :(得分:0)

抱歉,我浪费了你的时间。

我刚做了一个主要的嘘声! :P

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

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

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

    return false;
  });

全部谢谢:)