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

jQuery-为什么我的jQuery隐藏/显示代码不起作用,jquery,Jquery,我有一个非常简单的jquery代码,大概我是这么想的,但它的功能并不像我想象的那样 我想要的是,如果从下拉列表中选择的值为'Poster',则隐藏所有字段集,然后显示我选择的字段集。如果从下拉列表中选择的值为'Logo',则隐藏所有字段集,然后显示我选择的字段集,依此类推。我知道这很简单,但字段集不会总是像它们应该的那样隐藏 例如,如果我从下方选择“Logo”,则只应显示一个字段集,这起作用;如果我选择“小册子”,则应显示多个字段集,这起作用;但如果我返回并再次选择Logo,则所有字段集将保留,

我有一个非常简单的jquery代码,大概我是这么想的,但它的功能并不像我想象的那样

我想要的是,如果从下拉列表中选择的值为'Poster',则隐藏所有字段集,然后显示我选择的字段集。如果从下拉列表中选择的值为'Logo',则隐藏所有字段集,然后显示我选择的字段集,依此类推。我知道这很简单,但字段集不会总是像它们应该的那样隐藏

例如,如果我从下方选择“Logo”,则只应显示一个字段集,这起作用;如果我选择“小册子”,则应显示多个字段集,这起作用;但如果我返回并再次选择Logo,则所有字段集将保留,而不是全部隐藏,然后显示在项目类型“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(); 
           }

        });
}
因为你用

$document.readyfunction{}

这通常用于在加载文档后立即执行某些操作。 一旦您的下拉框发生更改,您的文档不久前已加载,并且其中的所有内容都已加载

$(document).ready(function() { 

    // this part here

 });
不会执行

简单的解决方案是:删除$document.readyfunction{及其右括号};从事件处理程序中,它首先不应该在那里。 将其放在事件处理程序之外的某个位置

更正后的代码应为:

$(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(); 
           }


}

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

问题是我的报价

我有: $'fieldsetsection-960','fieldsetsection-961','fieldsetsection-962','fieldsetsection-964','fieldsetsection-967'。隐藏

当它应该是: $'fieldsetsection-960、fieldsetsection-961、fieldsetsection-962、fieldsetsection-964、fieldsetsection-967'。隐藏


在结尾引用,而不是围绕每个引用。我会把这件事留着做,希望能防止其他人像我一样感到愚蠢。感谢您的所有输入。

也许您可以制作一个JSFIDLE,让我们可以看到问题的实际情况?您是否在该函数中使用了console.log来查看这些条件语句是否正在触发?您是否已验证dropVal正在使用大写字母回吐值?另外,$document.ready函数应该在这个projectTypeChange函数之外。这里的演示会非常有用。如果您无法提供演示,html也会很有用。字段集也可以从选择器中删除,因为id应该是唯一的。