选择框操作的jQuery索引

选择框操作的jQuery索引,jquery,jquery-selectors,Jquery,Jquery Selectors,我正在试图弄清楚,当在相邻的选择框中选择了某个选项时,如何从该选择框中删除该选项。基本上,用户可以通过选择框在这里添加多个记录,但是我想删除他们可用的选项列表,例如,他们不能在两个选择框中输入相同的值 单击“添加更多”按钮时,我将淡入下一个选择框容器。PHP已经生成了许多选择框,我使用JS来隐藏它们。每个选择框都有一个唯一的编号附加到ID中,因此我想访问那些包含字符串“other_pet_types”的选择框,然后我想遍历当前可见的选择框,并构建一个已选择值的数组,然后将其从新显示的选择框中的选

我正在试图弄清楚,当在相邻的选择框中选择了某个选项时,如何从该选择框中删除该选项。基本上,用户可以通过选择框在这里添加多个记录,但是我想删除他们可用的选项列表,例如,他们不能在两个选择框中输入相同的值

单击“添加更多”按钮时,我将淡入下一个选择框容器。PHP已经生成了许多选择框,我使用JS来隐藏它们。每个选择框都有一个唯一的编号附加到ID中,因此我想访问那些包含字符串“other_pet_types”的选择框,然后我想遍历当前可见的选择框,并构建一个已选择值的数组,然后将其从新显示的选择框中的选项列表中删除

这是我到目前为止所做的,但它绝对不对——我无法让ID的初始测试正常工作

当我意识到我现在离目标太远时,我非常感激任何指点

 var vals = new Array();
//build array with currently selected options
    $('p.mult_entries select').each(function(){
            vals += $(this).val();
    });
    $("p.mult_entries:hidden:first").fadeIn("slow", function() {
            $(this).find(('select').attr('id').indexOf('other_pet_types') > 0).each(function(){
            console.log($(this).val()); //as expected prints nothing - need to iterate through the options of the above select
                //once i extract the correct values, iterate through new select box and use inArray to remove options where that value already exists in one of previous select boxes
        });
    });

您构建阵列的方式是错误的。您正在像字符串一样构建它,而不是数组。这应该起作用:

$('p.mult_entries select').each(function(){
  vals[vals.length] = $(this).val();
});
找到合适的选择框的方式可以转化为一个选择器,而不是一系列函数:

$(this).children("select[id^=other_pet_types]").each(function(){
  //do stuff here
});

我做了一个有效的快速测试。它不需要构建单独的数组,而只需通过“选择”选项进行排序。您可能需要添加逻辑来更改选择并重新启用以前的选择。您可以使用jQuery的函数来存储该值,以便在更改后检索它……或者您可以将其保存到cookie中。不过,这应该可以让你开始了。

谢谢皮克,我马上就到了。我实际上想做的是这样的事情,遍历每个select中的选项-我尝试了以下操作,但是我得到了一个错误“UnrecognedExpression:option”$(this).children(“select[id^=other_pet_types])”).children(“option”).each(function(){if($.inArray(vals,$(this.val()))$(this.remove()))$(this.remove());谢谢你的布拉德利,非常整洁。这几乎可以正常工作,但Chrome抛出了一个“意外令牌非法”错误-我认为它来自以下行:$(“.filter”)。不是(this.children()。each(function()){..有什么想法吗?嗯…这很有趣。我没有在chrome上看到这个错误。chrome告诉你非法令牌是什么吗?需要注意的一点是,如果你从JSFIDLE复制和粘贴,你的代码中可能会有额外的问号…不知道为什么。啊,明白了-实际上看不到任何额外字符,但删除了所有sp在我从JSFIDLE粘贴的代码和以前的代码之间,一定有一些垃圾字符。再次感谢!