大家可以告诉我为什么remove()
在以下代码中不起作用
$("#mydropdown_for_month").change(function(){
$("#mydropdown_for_day").empty();
for (var i=1; i<=31; i++)
{options += '<option>' + i+'</option>';}
$('#mydropdown_for_day').after().html(options);
我有两个带有ID mydropdown_for_month
和mydropdown_for_day
的选择框。问题是,当我在第一个下拉列表中点击任意一个月时,第二个下拉列表通常会显示来自for循环的所有日期,但是当我再次更改月份时,从feb到4月,第二个下拉列表显示从1到31两次(当我选择4月时,第一次选择月份可能是1到31,第二次可能是1到31)。所以为了解决这个问题,我将以下语句$("#mydropdown_for_day").empty();
放在第一个下拉列表的每个选项中,第二个下拉列表中的所有先前选项都被删除但没有用。
请帮助我在哪里犯错?
答案 0 :(得分:2)
如果你的目标是用新选项替换当前选择框中的选项,我会这样做:
$("#mydropdown_for_month").change(function(){
var options, i;
options = $("#mydropdown_for_day")[0].options;
options.length = 0;
for (i = 1; i <= 31; i++) { // I'm guessing you'd want to use a different upper limit here for different months
options[options.length] = new Option(i, i);
}
});
它比构建HTML字符串更直接。 Option
构造函数最多接受四个参数:要显示的文本,值,选项是否为默认值以及是否已选中。原始options
元素上的select
伪数组(它实际上不是数组)包含选项。您可以通过在最后使用的索引之上分配索引(如上所述),或通过调用其add
方法(而非push
,就像添加数组一样)来添加它。
更新:您已经问过
了但是我的代码出了什么问题......哪里出错了?
从根本上说,错误在于你不是如何添加/删除选项;因此以上。它似乎应该工作(毕竟,这是你在HTML中指定它们的方式),但根据我的经验,它不能很好地跨浏览器。上述内容适用于我见过的每个浏览器。
其他细节:
after
,这没有任何意义; after
用于在之后插入内容,因此您必须说出内容是什么。如果出现错误,我不会感到惊讶。options
变量。答案 1 :(得分:0)
如果您想删除所有可以使用的选项:
$("#mydropdown_for_day option").remove()