【问题标题】:Why doesn't my Javascript switch statement work?为什么我的 Javascript switch 语句不起作用?
【发布时间】:2014-03-11 19:13:52
【问题描述】:

我有一个 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,但它没有:(

【问题讨论】:

  • 希望在 DIV 中隐藏一个或多个 DIV?
  • 天哪,我糟透了。你们都摇滚。没关系。我==愚蠢。现在去睡觉了 :P 感谢您指出显而易见的事实 :) 羞愧地低下头

标签: javascript jquery


【解决方案1】:

这行$('.window', li).hide(); 是错误的。如果你想定位 .window 和 li,你需要像写 css 一样写:

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

编辑:小提琴http://jsfiddle.net/9aHvx/7/

【讨论】:

  • 这与他所要求的完全不同。
  • 不。 li 是一个 var。 $('.window', li) 表示 li 元素中的 .window
  • 在这种情况下它会失败,因为 div.window 不在 li 内。
  • 是的,没错,PeeHaa。但是你真的认为他想隐藏所有东西而不仅仅是窗户吗? (嗯..再想你可能是对的,但我认为他只是在寻找一个窗口来隐藏带有窗口类的元素)
  • 我误会了他的意图,但无论哪种方式,li都放错了位置。
【解决方案2】:

使用语法:

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

表示您从节点li 开始搜索类window 的元素。窗口类不是li 后代的对象将不匹配。

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

去:

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

编辑:如果您只想隐藏窗口元素。如果您也想隐藏 li 的,那么请选择 shanethehat 的解决方案。

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        您的选择器已关闭

        $('.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

        【讨论】:

        • Hmmmmm....所以我不能在switch语句中使用jquery选择器?这很奇怪,不是吗?这是为什么呢?
        • 我的意思是 $('.window', li) 部分应该是 $('.window, li') 抱歉,如果我不清楚的话。我只是将值存储到一个变量中,因此我可以使用警报轻松调试它。
        【解决方案6】:

        对不起,我浪费了你的时间。

        我刚刚做了一个重大的嘘声! :P

          $('.handles a').click(function() {
        
            var snippet = $(this).parents('.snippet');
        
            switch($(this).parent().data('handle')) {
              case 'minimize':
                $('.window', snippet).hide();
                break;
            }
        
            return false;
          });
        

        谢谢大家:)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-13
          • 1970-01-01
          相关资源
          最近更新 更多