Javascript 通过jQuery追加新选项时,为什么jQuery sort()选择了错误的选项
我希望澄清为什么会发生这个问题,以及应该做些什么来避免这种行为 我有一个Javascript 通过jQuery追加新选项时,为什么jQuery sort()选择了错误的选项,javascript,jquery,Javascript,Jquery,我希望澄清为什么会发生这个问题,以及应该做些什么来避免这种行为 我有一个select,它将在事件触发器上添加新选项。当触发此触发器时,我想创建一个新的选项附加到选择,然后将所有选项按顺序排序(字母顺序或其他顺序,与此问题无关)。当我使用下面的代码执行此操作时,选项会添加到选择中,但是新选项会被选中,即使不同的选项是“选中的”选项 $(函数(){ var select=$('select'); select.append(“Nine”);//这将被选中 select.html(select.f
select
,它将在事件触发器上添加新选项。当触发此触发器时,我想创建一个新的选项
附加到选择
,然后将所有选项按顺序排序(字母顺序或其他顺序,与此问题无关)。当我使用下面的代码执行此操作时,选项
会添加到选择
中,但是新选项会被选中,即使不同的选项
是“选中的”选项
$(函数(){
var select=$('select');
select.append(“Nine”);//这将被选中
select.html(select.find('option')).sort(函数(x,y){
返回$(x).text()>$(y).text()?1:-1;
}));
});代码>
选择一个数字
三
一个
零
两个
八
n
在Unicode中位于Z
之后。尝试使用.text().toLowerCase()
进行排序,或者使用jQuery对象(查找的结果)进行排序,而类似数组(它们具有数字索引和长度属性)的对象在所有实例中都不应被视为数组,特别是在处理排序等方法时,它实际上选择了结果菜单中的最后一个选项,该选项也位于原始菜单的所选选项之下。它似乎将第一个[selected]
下的所有选项视为[selected]
,而在追加时,只会逐个选项设置和重置所选选项。万岁,jQuery坏了!此问题的正确副本为(有关保留代码并重置所选选项的代码,请参阅)。这是否回答了您的问题<在Unicode中,code>n
位于Z
之后。尝试使用.text().toLowerCase()
进行排序,或者使用jQuery对象(查找的结果)进行排序,而类似数组(它们具有数字索引和长度属性)的对象在所有实例中都不应被视为数组,特别是在处理排序等方法时,它实际上选择了结果菜单中的最后一个选项,该选项也位于原始菜单的所选选项之下。它似乎将第一个[selected]
下的所有选项视为[selected]
,而在追加时,只会逐个选项设置和重置所选选项。万岁,jQuery坏了!此问题的正确副本为(有关保留代码并重置所选选项的代码,请参阅)。这是否回答了您的问题?