jQuery-为什么我的jQuery隐藏/显示代码不起作用
我有一个非常简单的jquery代码,大概我是这么想的,但它的功能并不像我想象的那样 我想要的是,如果从下拉列表中选择的值为'Poster',则隐藏所有字段集,然后显示我选择的字段集。如果从下拉列表中选择的值为'Logo',则隐藏所有字段集,然后显示我选择的字段集,依此类推。我知道这很简单,但字段集不会总是像它们应该的那样隐藏 例如,如果我从下方选择“Logo”,则只应显示一个字段集,这起作用;如果我选择“小册子”,则应显示多个字段集,这起作用;但如果我返回并再次选择Logo,则所有字段集将保留,而不是全部隐藏,然后显示在项目类型“Logo”所需的字段集上 有人能看出我做错了什么吗?注意:在更改项目类型下拉字段时,将调用projectTypeChangejQuery-为什么我的jQuery隐藏/显示代码不起作用,jquery,Jquery,我有一个非常简单的jquery代码,大概我是这么想的,但它的功能并不像我想象的那样 我想要的是,如果从下拉列表中选择的值为'Poster',则隐藏所有字段集,然后显示我选择的字段集。如果从下拉列表中选择的值为'Logo',则隐藏所有字段集,然后显示我选择的字段集,依此类推。我知道这很简单,但字段集不会总是像它们应该的那样隐藏 例如,如果我从下方选择“Logo”,则只应显示一个字段集,这起作用;如果我选择“小册子”,则应显示多个字段集,这起作用;但如果我返回并再次选择Logo,则所有字段集将保留,
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应该是唯一的。