Javascript隐藏选定的选项

我有这个代码隐藏选定的选项:

function connect() { $(".selectbox option").show(); $(".selectbox").each(function(i) { var obj = $(".selectbox option[value='" + $(this).val() + "']"); if($(this).val() != "") obj.hide(); }); } function to() { $(".selectboxes option").show(); $(".selectboxes").each(function(i) { var obj = $(".selectboxes option[value='" + $(this).val() + "']"); if($(this).val() != "") obj.hide(); }); } 

但我现在的问题是,我使用PHP来生成select标签,并且在那个php代码中我有一个条件,一旦它看到这个值,它将自动添加selected = selected。 但我的JS仍会在下拉列表中显示该变量,即使它已被选中。 我尝试添加:

 $('.selectboxes option:selected').find("option").hide(); 

但它不起作用。 关于如何解决这个问题的任何想法?

顺便说一句:我忘了提一下,php代码将生成多个具有相同值的选择标签,这些标签将使用该function,因此当我有3个选择标签时,1将具有预选值,而另外2个将为空,现在当我点击其中两个没有选择值但我仍然可以在下拉列表中看到已经在选择1中预先选择的选项,我想要做的是它应该自动隐藏,使用该function它将在我从下拉列表中选择其他选项之前不要隐藏它。 从这一行开始:

 $(".selectbox option").show(); 

会显示下拉列表中的所有选项,是否有条件免除“此”值?

选择部分:

 for($z=0;$z  --Select-- <?php for($zz=0;$zz <option value = "" >   connect to 
<?php for($a=0;$a --Select-- <?php for($aa=0;$aa <option class = "option" value = "" > <?php }

谢谢

您已经在选择器中选择了选项 – 无需查找选项 – 因为这将返回一个空数组

 $('.selectboxes option:selected').hide(); // get rid of .find('option') 

要免除this值..我猜你在指的是所选的值..你可以使用:not as undefined陈述

 $(".selectbox option:not(:selected)").show(); 

您可以取出内联onChange,因为您正在使用jQuery ..并将更改事件处理程序绑定到dom上的select元素

 $(function(){ $('select').change(function(){ var $sel = $('option:selected'); // get all selected options $('option').show(); // show all options $sel.each(function(i,v){ // loop through selected options var $index = $(v).index(); // get index of selected option $('select').not($(this).parent()).each(function(){ // loop through other select - not current one if($index != 0){ // not default index $(this).find('option').eq($index).hide(); // hide selected option in other dropdowns } }); }); }).change(); // <-- trigger change right away }); 

http://jsfiddle.net/VE7jA/

 $('.selectboxes option:selected').find("option").hide(); 

你试图在选项中找到(’选项’)..试试这个

 $('.selectboxes option:selected').hide(); 

如果再次使用它,您也可以一次性删除该元素。

 $('.selectboxes option:selected').remove(); 

要根据值删除选项,您可以尝试

 $('.selectboxes option[value="0"]').remove() ; // Removes option with value 0 

正如所说,你试图在一个选项中找到一个选项,所以你必须摆脱.find调用。

除此之外,隐藏元素不能跨浏览器工作,因此您必须删除选项,并在必要时添加它们。 有几种方法可以管理它,所有方法都涉及在变量中存储完整的选项列表(作为数组,对象,甚至是HTML字符串)。

不总是支持隐藏option元素。 更惯用的方法是禁用它。

 obj.prop("disabled", true); 

或者像这样简化它。

 $(".selectbox option:selected").prop("disabled", true); 

或这个。

 $(".selectbox").each(function() { this.options[this.selectedIndex].disabled = true; });