Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Loop through JQuery selector using TypeScript for...of

I prefer the TypeScript forloop over the JQuery each().

I.e. because return and break work more like expected.

Is there an easy way to loop through a JQuery object using TypeScript?

let $elements = $('.text-element');

// error: Type 'JQuery' is not an array type or a string type.
for ( let $element of $elements )
{
}
like image 248
Dirk Boer Avatar asked Sep 18 '26 23:09

Dirk Boer


2 Answers

You can use jQuery get to return a iterable of the DOM elements (not jQuery elements):

let $elements = $('.text-element');

for (let element of $elements.get()) {
  let $element = $(element);
  ...
}
like image 74
ariel Avatar answered Sep 21 '26 12:09

ariel


Because jQuery's class selector doesn't return an iterator, but a jQuery object. To use a for..of syntax you need to make it an array-like iterable using Array#from.

$(function() {
  const elements = Array.from($('.text-element'));

  for (const element of elements) {
    console.log(element.innerHTML);
  }

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="text-element">
  10
</div>
<div class="text-element">
  20
</div>
<div class="text-element">
  30
</div>
like image 30
Kunal Mukherjee Avatar answered Sep 21 '26 12:09

Kunal Mukherjee



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!