$(“#id option”)。hide();没有在safari / chrome上工作?

时间:2012-03-21 21:19:27

标签: javascript jquery forms safari

同样的:

$("#id option").show();

我很惊讶。我认为我的代码出了问题。我用一个空白的html尝试了它:

<select id = "name">
  <option>1</option>
  <option>2</option>
</select>

使用Javascript:

​$("#name option").hide();​

http://jsfiddle.net/kgLkt/

它就像火狐的魅力,但不是野生动物园,也不是铬!

有替代品吗?!

编辑: 我需要隐藏/显示选项(或其中一些)出现在列表中。

5 个答案:

答案 0 :(得分:13)

隐藏:

var myOpts = $("#id option").detach();

显示:

$("#id option").append(myOpts);

.remove()相反,.detach()保留所有与删除元素相关联的jQuery数据。

答案 1 :(得分:0)

使用标准选择我不认为有任何跨浏览器方式来隐藏选择选项。

您可以查找自定义选择控件,也可以在分离的变量上保留完整的项目列表,并根据需要从选择中删除/添加项目。

答案 2 :(得分:0)

嗯。可能是一个实施问题......

也许试试

$("#name option").remove();

如果您需要保留一些已删除的知识,请先将它们加载到变量中。

var $opts = $("#name option");

然后你可以使用索引将它们添加回来:

$("#name").append( $opts.eq(n) );

答案 3 :(得分:-1)

这将适用于safari

   var select = $('#name');
    var diff = 0;
    console.dir(select[0].options);
    select.find('option').each(function(x) {
        select[0].options[x+diff] = null;
        diff -= 1;
    });

答案 4 :(得分:-1)

你没有在小提琴中选择jQuery。无论如何,您需要将selectedIndex的{​​{1}}设置为<select>以清除当前选中的选项:http://jsfiddle.net/kgLkt/2/

-1