Jquery 为什么不是';这不是在删除选项吗?

Jquery 为什么不是';这不是在删除选项吗?,jquery,html,Jquery,Html,我正在努力寻找代码中的错误。每当选项更改时,都会触发“我的功能”。我首先循环所有选择以查看选择了哪些值。然后,我在他们中间循环,然后是他们的孩子,以隐藏所有已经采取的选择。我确信还有其他关于堆栈溢出的文章有更好的方法来实现这一点,但我宁愿使用我的原始代码。不过,我找不到我的错误。我在任何地方都放置了警报,但它们总是只调用一次,即使.length大于1 谢谢 编辑: 我刚刚意识到问题出在.removeAttr上,所以如果有人能告诉我如何解决这个问题,那可能正是我需要的帮助 $(文档).on(

我正在努力寻找代码中的错误。每当选项更改时,都会触发“我的功能”。我首先循环所有选择以查看选择了哪些值。然后,我在他们中间循环,然后是他们的孩子,以隐藏所有已经采取的选择。我确信还有其他关于堆栈溢出的文章有更好的方法来实现这一点,但我宁愿使用我的原始代码。不过,我找不到我的错误。我在任何地方都放置了警报,但它们总是只调用一次,即使
.length
大于1

谢谢

编辑:

  • 我刚刚意识到问题出在
    .removeAttr
    上,所以如果有人能告诉我如何解决这个问题,那可能正是我需要的帮助
$(文档).on(“更改”,函数(e){
var hmmm=[];
var事实=真实;
var allSelects=$(“.student three select”);
对于(变量i=0;i

选择1:
选择一个
选择1
选择2

选择2: 选择一个 选择1 选择2
选择3: 选择一个 选择1 选择2
问题是jquery的操作符
[]
不返回jquery元素;它返回一个DOM元素

此元素没有方法
removeAttr()
(等价物是
removeAttribute()
),因此您应该将其传递给
$()
,以获取jquery元素

另外,jquery没有像
removeAttr()
那样添加attr()
。相反,您应该使用
attr(,true)
。看

$(文档).on(“更改”,函数(e){
var hmmm=[];
var事实=真实;
var allSelects=$(“.student three select”);
对于(变量i=0;i

选择1:
选择一个
选择1
选择2

选择2: 选择一个 选择1 选择2
选择3: 选择一个 选择1 选择2
  • 缓存选择器
    const$allSelects=$(“.student three select”)
  • .map()
    来排列所有选定的值
  • 使用
    :gt(0)
    跳过第一个提示选项
  • “hidden”
    属性使用
    .prop()
  • 使用
    Array.includes()
    检查所选值数组中是否存在值
const$allSelects=$(“.student three select”);
$allSelects.on(“更改”,函数(){
const sel=$allSelects.get().map(el=>el.value);//将选定值映射到数组
$allSelects.find('option:gt(0)').prop('hidden',function(){
return!this.selected&&sel.includes(this.value);
});
});

选择1:
选择一个
选择1
选择2
选择3

选择2: 选择一个 选择1 选择2 选择3
选择3: 选择一个 选择1 选择2 选择3
$(文档)。on(“更改”
应为
$(文档)。on(“更改”,“.student three select”,函数(e){
我已经更改了,但是我仍然不明白removeAttr为什么不起作用。好的,让我在depthWhat中看看
facts
用于什么?非常好。我会在带有j的for语句之后添加一个
facts=true
。否则隐藏/错误的代码实际上没有任何作用。