2015-07-28 2 views
1

Uncaught SyntaxError: Illegal break statementjquery Uncaught SyntaxError: заявление о недействительном расторжении

Это предупреждение, которое я получил, когда пытаюсь сломать цикл. Я хочу сделать разрыв цикла, когда условие встречается. В примере кода у меня есть два активных класса, где я хочу полностью выйти из цикла, когда встречается первый активный класс.

<ul> 
    <li id="foo1" class="bar">1</li> 
    <li id="foo2" class="bar">2</li> 
    <li id="foo3" class="bar">3</li> 
    <li id="foo4" class="bar">4</li> 
    <li id="foo5" class="active">5</li> 
    <li id="foo6" class="bar">6</li> 
    <li id="foo7" class="bar">7</li> 
    <li id="foo8" class="active">8</li> 
</ul> 

JS

$(function(){ 
    function setup(){ 
     var x,y,z; 
     $("ul li").each(function(){ 
      //console.log($(this)[0].className); 
      if($(this)[0].className === 'active'){ 
       x = $(this)[0].className; 
       y = $(this)[0].tagName; 
       z = $(this)[0].id; 
       break; 
      } 
     }); 
     var return_values = { 
      class : x, 
      tag : y, 
      id : z 
     } 
     return(return_values); 
    } 
    var data = setup(); 
    console.log(data.class,data.tag,data.id); 
}); 

JSFIDDLE here

ответ

3

Для выхода из анонимной функции в each() использования return false. Также обратите внимание, что использование DOMElement для создания объекта jQuery для доступа к свойствам DOMElement полностью избыточно. Попробуйте следующее:

$("ul li").each(function() { 
    if (this.className === 'active') { 
     x = this.className; 
     y = this.tagName; 
     z = this.id; 
     return false; 
    } 
}); 
+0

Хорошо спасибо. Я думал, что возвращение выйдет из всей функции, но я плохо это сделал. – Puni

+0

Без проблем, рад помочь. Для справки, 'return' применяется только к сфере действия функции, которая ее содержит. –

Смежные вопросы