如何使用 jQuery 反转 DOM 元素数组?


DOM 元素数组是由多个相同元素组成的数组,或者是由包含相同类或选择属性的元素组成的数组。我们的任务是使用 jQuery 反转 DOM 元素数组。反转 DOM 元素数组的方法有很多,但这篇文章将讨论两种反转 DOM 元素数组的方法。

  • 使用 for 循环

  • 使用 reverse() 方法

现在让我们通过实际使用 jQuery 代码示例来详细讨论这两种方法。

使用 for 循环

我们可以使用 for 循环反转数组中的元素,并在第一次迭代中交换第一个和最后一个元素,然后在第二次迭代中交换第二个和倒数第二个元素,以此类推。这样,在 for 循环结束时,我们将得到一个反转后的数组。这种方法需要 O(n) 的时间和 O(1) 的额外空间来反转数组。

现在让我们通过代码示例来实际实现它,并详细了解这种方法的工作原理。

步骤

  • 步骤 1 − 在第一步中,我们将在 HTML 文档中定义多个具有相同类的元素。

  • 步骤 2 − 在下一步中,我们将使用 jQuery 在 JavaScript 变量中使用类选择器来获取或选择所有这些元素。

  • 步骤 3 − 在这一步中,我们将遍历 DOM 元素数组,并交换从开头和结尾开始的相应位置的元素。

示例

下面的示例将解释如何实现上述算法以及反转 DOM 元素数组的方法 −

<html>
<head>
   <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
</head>
<body>
   <h2> Reversing array of DOM elements using jQuery </h2>
   <p class = "my_para"> Para 1 </p>
   <p class = "my_para"> Para 2 </p>
   <p class = "my_para"> Para 3 </p>
   <p class = "my_para"> Para 4 </p>
   <p class = "my_para"> Para 5 </p>
   <p class = "result1"> Text of the Paragraph tags and array elements before reversing array elements: </p>
   <p class = "elements1"> </p>
   <p class = "result2"> Text of the Paragraph tags and array elements after reversing array elements: </p>
   <p class = "elements2"> </p>
   <script>
      var resultArray = $('.my_para');
      var elements1 = $('.elements1');
      var elements2 = $('.elements2');
      var n = resultArray.length;
      var j = n - 1;
      for (var i = 0; i < n; i++) {
         var val = resultArray[i].innerHTML;
         elements1.append(" <b> " + val + " </b>, ")
      }
      for (var i = 0; i < n; i++) {
         var x = resultArray[i];
         resultArray[i] = resultArray[j];
         resultArray[j] = x;
      }
      for (var i = 0; i < n; i++) {
         var val = resultArray[i].innerHTML;
         elements2.append(" <b> " + val + " </b>, ")
      }
   </script>
</body>
</html>

在上面的示例中,我们使用了 for 循环来反转 DOM 元素数组的元素。在输出屏幕上,您将看到反转前后数组元素的顺序发生了变化。

使用 reverse() 方法

我们可以将 jQuery 的 reverse() 方法与 jQuery 的其他方法(如 get() 和 each())结合使用,以完成反转 DOM 元素数组元素的任务。get() 方法将获取所有相同类型的元素,然后 reverse() 方法将反转每个元素,each() 方法将遍历数组的所有元素。

让我们通过代码示例来实际了解它,并实现它以详细查看其工作原理。

上述方法和这种方法的算法几乎相同,您只需要用 reverse 方法方法替换反转数组元素的方法,而不是 for 循环方法。

示例

在这个例子中,我们在 DOM 的 $ 选择器内使用 jQuery 的 reverse() 方法和 get() 方法。我们打印数组元素值的之前和之后序列,它们将不同并且彼此反向。

<html>
<head>
   <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
</head>
<body>
   <h2> Reversing array of DOM elements using jQuery </h2>
   <p class = "my_para"> Para 1 </p>
   <p class = "my_para"> Para 2 </p>
   <p class = "my_para"> Para 3 </p>
   <p class = "my_para"> Para 4 </p>
   <p class = "my_para"> Para 5 </p>
   <p class = "result1"> Text of the Paragraph tags and array elements before reversing array elements: </p>
   <p class = "elements1"> </p>
   <p class = "result2"> Text of the Paragraph tags and array elements after reversing array elements: </p>
   <p class = "elements2"> </p>
   <script>
      var resultArray = $($('.my_para').get());
      var elements1 = $('.elements1');
      var elements2 = $('.elements2');
      var n = resultArray.length;
      var j = n - 1;
      for (var i = 0; i < n; i++) {
         var val = resultArray[i].innerHTML;
         elements1.append(" <b> " + val + " </b>, ")
      }
      resultArray = $($('.my_para').get().reverse());
      for (var i = 0; i < n; i++) {
         var val = resultArray[i].innerHTML;
         elements2.append(" <b> " + val + " </b>, ")
      }
   </script>
</body>
</html>

结论

在本文中,我们讨论了两种不同的反转 DOM 元素数组的方法。我们通过实际使用代码示例来详细讨论并理解这两种方法。

更新于:2023年5月8日

591 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告