0

インターネットでたくさん検索しましたが、情報オプションを除いてドロップダウンボックスの内容のみを削除するための定義済みのjqueryライブラリ関数が見つかりません。しかし、私が見つけることができる のは、ラベルを含むすべてのコンテンツを空にする.empty() だけです。

したがって、私は以下のように独自の関数を書きました。

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

たとえば、フォームで国が変わるたびに、次のように呼び出します。

$("#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 に答える