如何使用 jQuery 對 option 元素進行字母排序?


有時,我們需要按字母順序對下拉選單的選項進行排序。例如,您在網站上銷售電腦,並希望允許使用者根據型號選擇電腦。如果您的網站包含數百種不同品牌的型號,如果未排序,使用者將很難找到特定品牌的電腦。但是,您可以提供搜尋功能,但如果沒有,則按字母順序對所有選項元素進行排序會更好。

在這裡,我們將學習使用 jQuery 對下拉元素的所有選項進行排序的各種方法。

使用 jQuery 的 sort() 方法

sort() 方法允許我們根據特定條件對字串、數字或任何值進行排序。我們可以將比較器函式傳遞給 sort() 方法,該方法返回 0、-1 和 1。

語法

使用者可以按照以下語法對下拉列表的所有選項進行排序。

dorpdown.html(dorpdown.find('option').sort(function (option1, option2) {
   return $(option1).text() < $(option2).text() ? -1 : 1;
});

在上述語法中,下拉列表是 <select> HTML 元素。我們使用 find() 方法查詢所有選項並應用 sort() 函式。

演算法

使用者可以按照以下演算法按字母順序對所有下拉選項進行排序。

  • 步驟 1 − 透過 id 或標籤訪問 <select> 選單。

  • 步驟 2 − 使用 html() 方法獲取 <select> 標籤的 HTML。

  • 步驟 3 − 在 html() 方法的引數中,對所有 <option> 元素使用 find() 方法。

  • 步驟 4 − 找到選項後,對所有選項應用 sort() 方法。

  • 步驟 5 − 在 sort() 方法中,將回調比較器函式作為引數傳遞。

  • 步驟 6 − 比較器函式將兩個選項作為引數,並按字母順序對它們進行排序。

  • 步驟 7 − 從比較器函式中,根據兩個選項文字的字母順序返回 -1 或 1。我們可以使用 text() 方法獲取 <option> 元素的文字。

示例 1

在下面的示例中,我們使用 <select> 和 <option> 標籤建立了下拉選單。使用者可以看到其選項未按字母順序排列。

之後,在 jQuery 中,我們透過標籤名稱訪問了 <select> 選單並對所有選項元素進行排序。當用戶在輸出中單擊按鈕時,他們可以看到選項按字母順序顯示。

<html>
<head>
   <script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.3/jquery.min.js"> </script>
</head>
<body>
   <h2>Using the <i>jQuery sort() method</i> to sort all option elements of the dropdown</h2>
   <h3>Choose an option from the dropdown.</h3>
   <select>
      <option value = "Dell">Dell</option>
      <option value = "Lenovo">Lenovo</option>
      <option value = "MSI">MSI</option>
      <option value = "Apple">Apple</option>
      <option value = "HP">HP</option>
      <option value = "Acer">Acer</option>
      <option value = "Samsung">Samsung</option>
   </select> <br> <br>
   <button onclick = "sortOptions()"> Sort Options </button>
   <script>
      function sortOptions() {
         var dorpdown = $('select');
         dorpdown.html(dorpdown.find('option').sort(function (option1, option2) {
            return $(option1).text() < $(option2).text() ? -1 : 1;
         }));
      }
   </script>
</body>
</html>

示例 2

在此示例中,我們也使用 sort() 方法對下拉列表的所有選項進行排序。而不是訪問下拉選單,我們直接使用 jQuery 訪問了所有下拉選項。

之後,我們使用 sort() 方法根據其文字值(小寫)對所有選項元素進行排序。在輸出中,使用者可以看到,當他們單擊按鈕時,下拉列表中的所有汽車都將按字母順序排序。

<html>
<head>
   <script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.3/jquery.min.js"> </script>
</head>
<body>
   <h2>Using the <i>jQuery sort() method</i> to sort all option elements of the dropdown</h2>
   <p>Choose any option from the dropdwon.</p>
   <select>
      <option value = "BMW"> BMW </option>
      <option value = "OD"> OD </option>
      <option value = "Verna"> Verna </option>
      <option value = "Honda City"> Honda City </option>
      <option value = "Alto"> Alto </option>
      <option value = "i20"> i20 </option>
      <option value = "zen"> zen </option>
   </select>  <br> <br>
   <button onclick = "sortOptions()"> Sort Options </button>
   <script>
      function sortOptions() {
         var allOptions = $("select option");
         allOptions.sort(function (op1, op2) {
            var text1 = $(op1).text().toLowerCase();
            var text2 = $(op2).text().toLowerCase();
            return (text1 < text2) ? -1 : 1;
         });
         allOptions.appendTo("select");
      }
   </script>
</body>
</html>

在本教程中,我們看到了對所有下拉列表選項進行排序的兩個不同示例。在這兩個示例中,我們使用了不同的方法。在第一個示例中,我們使用 find() 方法獲取 <select> 元素的所有選項,而在第二種方法中,我們直接使用 jQuery 透過標籤名稱訪問所有選項。

更新於:2023年2月16日

6K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告