11

我有一个这样的选择列表:

<select id="selectlist" name="selectproduct" >
    <option value=""> --- Select product  --- </option>
    <option value="1">Product 1</option>
    <option value="2">Product 2</option>
    <option value="3">Product 3</option>
    <option value="4">Product 4</option>
</select>

不幸的是我无法编辑它。有没有什么方法可以让我默认隐藏“产品 4”选项?我正在尝试使用 CSS,但它不适用于 IE。

4

11 回答 11

10

要隐藏它,请用 span 标签包装它。

$( "#selectlist option[value=4]" ).wrap( "<span>" );

要显示它,请打开 span 标签(如果有的话)。

if ( $( "#selectlist option[value=4]" ).parent().is( "span" ) ){
    $( "#selectlist option[value=4]" ).unwrap();
}
于 2013-09-11T15:31:06.750 回答
5

IE不支持使用css隐藏选项,所以需要自己更新options列表。

尝试类似的东西

$('#selectlist option[value=4]').remove();

演示:小提琴

或者如果您想稍后启用它

var sel = $('#selectlist');
var opts = sel.find('option');

$(':checkbox').click(function(){
    sel.empty().append(this.checked ? opts : opts.filter('[value!=4]'));
}).click()

演示:小提琴

于 2013-07-15T11:05:27.443 回答
3

您可以在脚本中使用以下行包含隐藏选项。

    $("#selectlist option[value='4']").hide();

如果您想再次显示此选项,请使用以下行。

   $("#selectlist option[value='4']").show();
于 2014-08-12T07:38:07.307 回答
2

为了节省您的时间,请阅读以下答案。

好的,我搜索了几个小时,我注意到所有浏览器都没有“隐藏”的工作方式(我的意思是使选项暂时从下拉列表中消失),例如将可见性设置为隐藏或样式=“显示:无”。

我的最终方法是: 1. 创建一个数组来存储下拉列表的所有选项。2.使用一种方法根据您想要显示的内容动态更新下拉列表。

就是这样,如果你想使用下拉列表而不使用任何库

于 2015-11-06T09:58:25.813 回答
1

您可以通过将选项移动到隐藏的选择元素或缓存的文档片段来“隐藏”该选项,然后在您想要显示它时将其移回:

var selectTool = (function() {
  var frag = document.createDocumentFragment();
  return {
    hideOpt: function (selectId, optIndex) {
      var sel = document.getElementById(selectId);
      var opt = sel && sel[optIndex];
      console.log(opt);

      if (opt) {
        frag.appendChild(opt);
      }
    },

    showOpt: function (selectId) {
      var sel = document.getElementById(selectId);
      var opt = frag.firstChild;
      if (sel && opt) {
        sel.appendChild(opt);
      }
    }
  }
}());

然后你可以隐藏第四个选项,如:

<input type="button" value="Hide option" onclick="
  selectTool.hideOpt('selectlist',4);
">

并再次使用:

<input type="button" value="Show option" onclick="
  selectTool.showOpt('selectlist');
">

当然都是玩代码,但你应该得到一些想法。如果要存储许多选项,则需要一种引用它们的方法,因此可以将它们存储在具有某种形式的引用方案的对象中。

于 2013-07-15T11:39:42.757 回答
0

使用 java 脚本将子项附加到选项列表下方。

`var option = document.createElement("option");
 option.text = "All Users";
 option.value = "all_user";
 var select = document.getElementById("log_user_type");
 select.appendChild(option);`
于 2014-08-14T08:03:43.737 回答
0

我想你也在使用 JQuery。

$("#selectlist option[value='option4']").remove();
于 2013-07-15T11:08:28.647 回答
0

尝试使用 disabled 属性禁用该选项。

<select id="selectlist" name="selectproduct" >
 <option value=""> --- Select product  --- </option>
 <option value="1">Product 1</option>
 <option value="2">Product 2</option>
 <option value="3">Product 3</option>
 <option value="4" disabled="disabled">Product 4</option>
</select>

检查演示

于 2013-07-15T11:03:45.843 回答
0

看到这个链接

http://jsfiddle.net/DKKMN/

<select id="selectlist" name="selectproduct" >
 <option value=""> --- Select product  --- </option>
 <option value="1">Product 1</option>
 <option value="2">Product 2</option>
 <option value="3">Product 3</option>
 <option value="4" id="i">Product 4</option>
</select>


#i{display:none;}

创建一个 id 并在风格上使其不可见

于 2013-07-15T11:05:47.343 回答
0

如果要从选择列表中删除某些选项,可以使用以下代码:

<script type="text/javascript">
    $(window).bind("load", function() {    
        $('#select_list_id option[value="AB"],option[value="SK"]').remove();
    });
</script>
于 2017-01-18T05:52:01.170 回答
-3
<option value="4" style="display:none">Product 4</option> 

默认隐藏第四个选项。

于 2017-05-23T12:55:03.907 回答