jQuery - 为什么我的jquery隐藏/显示代码不起作用

时间:2012-08-13 14:01:00

标签: jquery

我有这个非常简单的jquery代码,或者我认为,但它不起作用

我想要的只是,如果从dropdown ='Poster'中选择值,则隐藏所有字段集,然后显示我选择的那个。如果从dropdown ='Logo'中选择值,则隐藏所有字段集,然后显示我选择的字段集等等。我知道很简单,但是字段集并不总是隐藏起来。

例如,如果我从向下选择“徽标”,则只显示一个字段集,这是有效的,如果我选择“小册子”',应显示多个字段集,这样可行,但如果我再次返回并再次选择徽标,则所有字段集保持不变,而是隐藏所有字段集,然后显示项目类型“徽标”所需的字段集。

谁能看到我做错了什么? 注意:在更改项目类型下拉字段时,调用projectTypeChange()

function projectTypeChange()
{
        $(document).ready(function() {
        $('fieldset#section-960', 'fieldset#section-961', 'fieldset#section-962', 'fieldset#section-964', 'fieldset#section-967').hide();
        var dropVal = $('select#6211').val();

       if(dropVal ==  "Poster")
           {
              $('fieldset#section-960', 'fieldset#section-961', 'fieldset#section-962', 'fieldset#section-964', 'fieldset#section-967').hide();
              $('fieldset#section-960').show(); 
              $('fieldset#section-961').show(); 
              $('fieldset#section-967').show(); 
              $('fieldset#section-962').show(); 
           }
       if(dropVal ==  "Booklet")
           {
              $('fieldset#section-960', 'fieldset#section-961', 'fieldset#section-962', 'fieldset#section-964', 'fieldset#section-967').hide();
              $('fieldset#section-960').show(); 
              $('fieldset#section-961').show(); 
              $('fieldset#section-967').show(); 
              $('fieldset#section-962').show(); 
              $('fieldset#section-964').show(); 
           }
       if(dropVal ==  "Logo")
           {
              $('fieldset#section-960', 'fieldset#section-961', 'fieldset#section-962', 'fieldset#section-964', 'fieldset#section-967').hide();
              $('fieldset#section-962').show(); 
           }

        });
}

2 个答案:

答案 0 :(得分:1)

因为你使用

$(document).ready(function() { });

这通常用于在文档加载后立即执行某些操作。 下拉框更改后,您的文档已经加载了一段时间,而

中的所有内容都已加载
$(document).ready(function() { 

    // this part here

 });

不会执行。

简单的解决方案:从事件处理程序中删除$(document).ready(function() {(及其右括号});,它不应该在那里。 把它放在事件处理程序之外的某个地方。

您的更正后的代码应为:

$(document).ready(function() {
    $('fieldset#section-960', 'fieldset#section-961', 'fieldset#section-962', 'fieldset#section-964','fieldset#section-967').hide();
});

function projectTypeChange()
{
        var dropVal = $('select#6211').val();

       if(dropVal ==  "Poster")
           {
              $('fieldset#section-960', 'fieldset#section-961', 'fieldset#section-962', 'fieldset#section-964', 'fieldset#section-967').hide();
              $('fieldset#section-960').show(); 
              $('fieldset#section-961').show(); 
              $('fieldset#section-967').show(); 
              $('fieldset#section-962').show(); 
           }
       if(dropVal ==  "Booklet")
           {
              $('fieldset#section-960', 'fieldset#section-961', 'fieldset#section-962', 'fieldset#section-964', 'fieldset#section-967').hide();
              $('fieldset#section-960').show(); 
              $('fieldset#section-961').show(); 
              $('fieldset#section-967').show(); 
              $('fieldset#section-962').show(); 
              $('fieldset#section-964').show(); 
           }
       if(dropVal ==  "Logo")
           {
              $('fieldset#section-960', 'fieldset#section-961', 'fieldset#section-962', 'fieldset#section-964', 'fieldset#section-967').hide();
              $('fieldset#section-962').show(); 
           }


}

答案 1 :(得分:0)

好吧,现在就开枪吧。我发现它 - 似乎总是发生,之后,我已经请求帮助了。

问题是我的报价。

我有: $('fieldset#section-960','fieldset#section-961','fieldset#section-962','fieldset#section-964','fieldset#section-967')。hide();

应该是: $('fieldset#section-960,fieldset#section-961,fieldset#section-962,fieldset#section-964,fieldset#section-967')。hide();

结尾处引用,而不是每个引号。我会把这个留下来,希望能阻止别人像我一样感到愚蠢。感谢您的所有意见。