0

在互联网上我搜索了很多。并且找不到预定义的 jquery 库函数,用于仅删除下拉框的内容,不包括信息选项。但我能找到的只是 .empty(),它清空了包括标签在内的所有内容。

因此,我编写了自己的函数,如下所示。

$.fn.emptyTheContents = function () {
    var dropDownInfo = $(this).children('option[value=""]').text();
    $(this).empty();
    $(this).append($('<option/>', {
        value: "",
        text: dropDownInfo
    }));
};

例如,在表格中的每个国家/地区更改时,我将调用 as.,

$("#state").emptyTheContents(); // Where <select your state> is the common info.
//Binding of corresponding states using AJAX request.

我的问题是通过排除信息选项,下拉框只清空内容是很常见的要求,但是为什么没有库函数呢?

4

3 回答 3

1

如果您在项目中广泛使用该特定逻辑,那么您肯定可以创建和使用单独的方法。

但是,我理解您的问题是为什么它不包含在 jquery 库中。答案是,从库设计者的角度来看,这个任务非常狭窄,可以使用现有的库函数来解决。

例如:

$("#state").children('option:not(:first)').remove();

库设计者的目标是提供尽可能少的方法来解决尽可能多的问题。您不想要“万能的方法”,因为没有人会记得如何使用 API。相反,您努力在灵活性与易用性之间找到平衡,这样一些解决方案最终不得不退出。

如果您想了解更多关于 JavaScript 中的 API 设计的信息,请查看

于 2013-07-04T10:56:44.030 回答
0

我想你是说有一个option元素包含下拉框的描述。所以你想删除option除第一个元素之外的所有元素。这很容易做到:

 $('#state option').slice(1).remove();
  • $.fn.slice就像减少选择一样Array.prototype.slice.slice(1)表示“从选择中删除第一个元素”。
  • $.fn.remove从 DOM 中删除选定的元素。

因此,这将导致只有第一个元素留在下拉列表中。这并不是一个真正常见的要求,这就是为什么它不是标准的 jQuery 函数。正如您在上面看到的,尤其是因为它很容易做到。

这是一个显示此代码的 jsFiddle。

于 2013-07-04T10:53:35.297 回答
0

这是一个...

$("#state").html("").append("<option value=''>Select Any</option>");
于 2013-07-04T10:54:26.373 回答