Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript显示和隐藏选择框/_Javascript_Jquery - Fatal编程技术网

使用javascript显示和隐藏选择框/

使用javascript显示和隐藏选择框/,javascript,jquery,Javascript,Jquery,我有一些测试代码,打算在选择某个选项时显示一个选择框,然后在该选项更改时隐藏 HTML: 这段代码非常有用,只要满足以下条件: if ($(this).text() ==='2') { $('#sel2').show(); } 是JavaScript,但在添加else if语句时会下降。另外,显示选择框本身还是显示包含div标记更好?第二个选择框不是选中框的唯一原因是选中框似乎不喜欢已隐藏的宽度问题元素 如果有任何帮助,我们将不胜感激。我会让它变得更简单,获取值并从中连接sel ID: $

我有一些测试代码,打算在选择某个选项时显示一个选择框,然后在该选项更改时隐藏

HTML: 这段代码非常有用,只要满足以下条件:

if ($(this).text() ==='2') {
  $('#sel2').show();
}
是JavaScript,但在添加else if语句时会下降。另外,显示选择框本身还是显示包含div标记更好?第二个选择框不是选中框的唯一原因是选中框似乎不喜欢已隐藏的宽度问题元素


如果有任何帮助,我们将不胜感激。

我会让它变得更简单,获取值并从中连接sel ID:

$("#sel1").change(function() {
    $("select:not(#sel1)").hide(); //hide other selects, excluding #sel1
    $("#sel" + this.value).show();
});
您的$'option:selected'选择器正在查看所有select元素中的选项,而不仅仅是sel1。因此,sel2由于在sel1中选择了2而显示,然后由于在sel2本身中选择了1而立即隐藏。确保只查看所需的值:

var selCategory = $('#sel1');

selCategory.change(function () {
  selCategory.find('option:selected').each(function () {
    if ($(this).text() =='2') {
      $('#sel2').show();
    }
    else {
      $('#sel2').hide();
    }
  });
});

是的,这会更容易,但第一个选择框中的选项稍后将从数据库中提取,它们的id将用于值。如果能保证这些值永远不会更改,我会很高兴,但到目前为止,一些数据库更改意味着如果需要更改,使用文本值会减少麻烦。嗯……这确实有区别:-加载的数据库值是否与选择对齐,例如,选择选项2将始终显示第二个选择,依此类推基本上,当可能有一种方法可以脱离选定的索引或自定义数据-*值时,使用巨大的if-else可能是一种真正的痛苦。这是一个伟大的答案@tymeJV,如果我的情况不同,它会非常有效。我认为保罗·鲁布的答案是正确的,我也把你的答案投了赞成票。我真的很感谢你的帮助。嗯,好的,每个选择框的唯一选择值会使用特定选择框吗?所以被选中=被选中1被选中=被选中2否。就像在我的代码中一样,我们只是在selCategoryGah中查找选定的选项。我是个傻瓜,我没有看到它是selCategory.find的事实。这很有道理。
$("#sel1").change(function() {
    $("select:not(#sel1)").hide(); //hide other selects, excluding #sel1
    $("#sel" + this.value).show();
});
var selCategory = $('#sel1');

selCategory.change(function () {
  selCategory.find('option:selected').each(function () {
    if ($(this).text() =='2') {
      $('#sel2').show();
    }
    else {
      $('#sel2').hide();
    }
  });
});