9

How can I exit the each function when the conditions was true once?

This does not work:

  $$('.box div').each(function(e) {
 if(e.get('html') == '') {
    e.set('html', 'test');
    exit;
 }
  });
Billy
  • 125
  • 2
  • 7

2 Answers2

14

Use .some?

  $$('.box div').some(function(e) {
     if(e.get('html') == '') {
        e.set('html', 'test');
        return true;
     } else
        return false;
  });

But probably you could just use

  arr = $$('.box div[html=""]');
  if (arr.length > 0)
     arr[0].set("html", "test");
kennytm
  • 510,854
  • 105
  • 1,084
  • 1,005
1

Just throw something and catch it higher:

try {
  $$('.box div').each(function(e) {
    if(e.get('html') == '') {
      e.set('html', 'test');
      throw "break";
    }
  });
} catch (e) {
  if(e != "break") throw e;
}

But using a combination of .every and .some would be a far better idea.

Alsciende
  • 26,583
  • 9
  • 51
  • 67