用于隐藏选项值的jquery代码在IE10中不起作用

用于隐藏选项值的jquery代码在IE10中不起作用,jquery,Jquery,我在drupal网站上使用计算器。在我的计算器中,有一个下拉菜单,其中的选项具有特定的值。 例子: 期权对应值 标准131 标签132 条例草案133 交换134 选择一个选项后,计算器将计算该值并将其显示在屏幕上。 将提供一个添加图像,以添加另一组用于其他计算的计算器。 我想做的是,当值133已经在前一个计算器上选择时,它将不会出现在下一个计算器的下拉菜单上,依此类推 我在drupal网站上有一个硬编码的jquery函数,它克隆了我的计算器。当选择时,我设法隐藏了值为133的选项,它工作正常,

我在drupal网站上使用计算器。在我的计算器中,有一个下拉菜单,其中的选项具有特定的值。 例子: 期权对应值 标准131 标签132 条例草案133 交换134

选择一个选项后,计算器将计算该值并将其显示在屏幕上。 将提供一个添加图像,以添加另一组用于其他计算的计算器。 我想做的是,当值133已经在前一个计算器上选择时,它将不会出现在下一个计算器的下拉菜单上,依此类推

我在drupal网站上有一个硬编码的jquery函数,它克隆了我的计算器。当选择时,我设法隐藏了值为133的选项,它工作正常,不会在下一个计算器上显示。然而,这只适用于firefox,而不适用于IE10。请帮忙。这是我的密码

$('.add_category').live('click', function(e){
   if(($('.category_box:last .calc_cat option').length - 1) == $('.category_box').length)
   {
      //return false;
   }
   last_cat_array.push(tid);
   //alert(last_cat_array); 
   if(jQuery.inArray('133',last_cat_array) == -1){
      // the element is not in the array
      obj_clone = $('.category_box:last').clone();
      $('.category_box:last').after(obj_clone);
      $('.category_box:last').find('.calc_cat_sub_container').css({ visibility : 'hidden'});
      $('.category_box:last').find('.calc_cat_sub').html('<option value="">--</option>');
      $('.category_box:last').find('.amount_label').text('Amount');
      obj_clone.find('.calc_cat').val(0);
      obj_clone.find('.amount').val('');
      obj_clone.find('.points').val('');
      obj_clone.find('.show_details').hide();
   }
   else
   { //the element is in the array
      obj_clone = $('.category_box:last').clone();
      $('.category_box:last').after(obj_clone);
      $('.category_box:last').find('.calc_cat_sub_container').css({ visibility : 'hidden'});
      $('.calc_cat').children("option[value='133']").css('display','none'); 
      $('.category_box:last').find('.calc_cat_sub').html('<option value="">--</option>');
      $('.category_box:last').find('.amount_label').text('Amount');
      obj_clone.find('.calc_cat').val(0);
      obj_clone.find('.amount').val('');
      obj_clone.find('.points').val('');
      obj_clone.find('.show_details').hide();
   };
});
$('.add_category').live('click',函数(e){
if($('.category\u box:last.calc\u cat option').length-1)==$('.category\u box').length)
{
//返回false;
}
最后一个类别数组推送(tid);
//警报(最后一个cat阵列);
if(jQuery.inArray('133',last_cat_数组)=-1){
//该元素不在数组中
obj_clone=$('.category_box:last').clone();
$('category_box:last')。在(obj_clone)之后;
$('.category_box:last').find('.calc_cat_sub_container').css({visibility:'hidden');
$('.category_box:last').find('.calc_cat_sub').html('--');
$('.category_box:last')。查找('.amount_标签')。文本('amount');
obj_clone.find('.calc_cat').val(0);
obj_clone.find('.amount').val('');
obj_clone.find('.points').val('');
obj_clone.find('.show_details').hide();
}
其他的
{//元素在数组中
obj_clone=$('.category_box:last').clone();
$('category_box:last')。在(obj_clone)之后;
$('.category_box:last').find('.calc_cat_sub_container').css({visibility:'hidden');
$('.calc_cat').children('option[value='133'])).css('display','none');
$('.category_box:last').find('.calc_cat_sub').html('--');
$('.category_box:last')。查找('.amount_标签')。文本('amount');
obj_clone.find('.calc_cat').val(0);
obj_clone.find('.amount').val('');
obj_clone.find('.points').val('');
obj_clone.find('.show_details').hide();
};
});

感谢大家

由于IE中缺少对显示的支持,多年前一直是这样的情况,现在最好重建选项(也可以执行一个简单的
删除()
——请参阅底部的注释)。此外,在IE中,您不能在
标记上注册单击处理程序

例如:

HTML

这是select最简单的情况,它没有设置为
多个
,并且假定在第二次选择中没有选择的选项

如果适合应用程序,也可以删除
。以上内容将允许用户对第一个


检查IE10s开发者工具中的控制台。我怀疑会有一个obj_克隆是未定义的错误。这是因为IE不喜欢在没有var关键字的情况下声明变量,只在Firefox中有效,而在IE10中有效。IE9、Chrome和Safari怎么样?F12开发者工具中有错误吗?IE的所有版本中都是一样的…很少支持隐藏或
标记上的事件,因此不是一个好方法
<select id="select-1">
   <option value="1">One</option >
   <option value="2">Two</option >
</select>

<select id="select-2">
   <option value="1">One</option >
   <option value="2">Two</option >
</select>
/* first store a complete set of clones*/
var select2Options= $('#select-2 option').clone();

$('#select-1').change(function(){
   var val=$(this).val();
   /* create new set filtering out value selected in #select-1*/
   var options= select2Options.clone().filter(function(){
       return this.value != val;
   });
   $('#select-2').html( options);

});