2012-03-21 64 views
3

相同:

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

我只是感到惊讶。我认为我的代码出了问题。我有一个空白的HTML试了一下:

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

的Javascript:

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

http://jsfiddle.net/kgLkt/

它就像用Firefox魅力,而不是在Safari上也没有镀铬!

有替代品吗?!

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

+0

尝试使用类而不是id。 – c0d3Junk13 2012-03-21 21:22:37

+3

Java!== JavaScript。 – Blender 2012-03-21 21:22:59

+0

我只是好奇你到底想要完成什么?为什么不隐藏选择元素?我实际上会说WebKit浏览器没有做错什么。请,请,它是JavaScript而不是Java。 – Daff 2012-03-21 21:23:55

回答

13

要隐藏:

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

要显示:

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

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

0

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

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

-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; 
    }); 
+0

不起作用.. – 2012-03-21 21:29:03

+0

$(#name).css('display','none');//工作得很好,但与选项参数它不 – irfanmcsd 2012-03-21 21:33:58

+0

这就是问题! – 2012-03-21 21:35:33

0

嗯工作。可能是一个执行问题...

也许尝试

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

,如果你需要维护的东西已被删除然后将其装入事先变量的一些知识。

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

那么你可以使用索引,并添加回去:

​​
-1

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

$("#name option").hide().parent().prop("selectedIndex", -1);​​​​​​ 
+0

我想隐藏选项出现在列表中,而不是隐藏默认选项。 – 2012-03-21 21:39:31

+0

@Khaled Mahmoud:这不仅仅适用于Chrome吗? http://jsfiddle.net/kgLkt/3/ – pimvdb 2012-03-21 21:41:16

+0

nope ,,,它没有。 – 2012-03-21 21:45:20