2010-05-03 2 views
1

Вот мой Jqueryзахватить только 2 вещи из Jquery Loop

$th.each(function(idx) { 
     var notSelected = $(this).text(); 
     if ((notSelected.indexOf(to) != -1) || (notSelected.indexOf(from) != -1)) { 

     if (idx < 10) 
     { 
     $(this).show(); 
     // and show its corresponding td 
     $td.eq(idx).show(); 
     } 
     } 
    }); 

Она является частью функции типа tableFilter для HTML таблицы. Однако я хочу, чтобы он отображал только 2 результата. Я пытался создать экземпляр какого-то индексного счетчика, но я не увенчался успехом. Любая помощь или мысли будут оценены.

ответ

1
var index = 0; 
$th.each(function(idx) { 
     var notSelected = $(this).text(); 
     if ((notSelected.indexOf(to) != -1) || (notSelected.indexOf(from) != -1)) { 

     if (idx < 10 && index < 2) 
     { 
     $(this).show(); 
     // and show its corresponding td 
     $td.eq(idx).show(); 
     index = index + 1; 
     } 
     } 
    }); 
+0

или вы можете использовать index + = 1; как последняя строка во внутреннем блоке if. –

0

Это более эффективно, чем принятый ответ, и не будет загрязнять пространство имен.

(function(index){ 
    $th.each(function(idx) { 
     if(idx < 10){ 
      var self = $(this), 
       notSelected = self.text(); 
      if (notSelected.indexOf(to) > -1 || notSelected.indexOf(from) > -1) 
       self.show(); 
       // and show its corresponding td 
       $td.eq(idx).show(); 
       if(++index===2){ 
        //break the loop 
        return false; 
       } 
      } 
     } 
    }); 
}(0)); 
Смежные вопросы