jquery中的remove()不起作用

jquery中的remove()不起作用,jquery,Jquery,嗨,有人能告诉我为什么删除在以下代码中不起作用吗 $("#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); 我

嗨,有人能告诉我为什么删除在以下代码中不起作用吗

  $("#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,表示月份,ID为mydropdown,表示日期。问题是,当我在第一个下拉列表中单击任何月份时,第二个下拉菜单通常显示我提到的for循环中的所有日期,但是当我再次更改月份时,例如从2月到4月,第二个下拉菜单显示日期从1到31两次,第一个我选择的月份是1到31,第二个我选择的月份是1到31。所以为了解决这个问题,我将下面的语句$mydropdown\u for_day.empty;因此,在第一个下拉列表中的每个选择上,第二个下拉列表之前的所有选项都会被删除,但没有任何用处


请帮助我哪里出错?

如果要删除所有可使用的选项:

 $("#mydropdown_for_day option").remove()

如果您的目标是用新选项替换当前选择框中的选项,我会这样做:

$("#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字符串更直接。选项构造函数最多接受四个参数:要显示的文本、值、选项是否为默认值以及是否选中。options伪数组它实际上不是原始select元素上的数组,包含选项。您可以通过如上所述为上一次使用的索引上方的索引赋值,或者通过调用其add方法而不是数组中的push方法来添加

更新:下面是您的提问

但是我的代码有什么问题。。。错在哪里

从根本上说,错误在于这不是添加/删除选项的方式;因此,上述情况。看起来它终究应该能工作,这就是在HTML中指定它们的方式,但根据我的经验,它在跨浏览器时不能很好地工作。我所见过的每一款浏览器都可以使用上述功能

其他细节:

你打电话时没有争论,这毫无意义;after用于在内容之后插入内容,因此您必须说明内容是什么。如果因此而出现错误,我不会感到惊讶。 您从未声明或初始化过options变量。
因为没有移动电话代码中没有要删除的调用。永远不会声明options变量。after不能在没有参数的情况下调用。我已经尝试了相同的语句,但它再次显示了两次对两次selection@mehwish:从根本上说,您的代码的错误在于,您现在就是这样在选择框中添加/删除选项的。另请参见更新答案中的其他注释。