2011-01-21 23 views
14

dışındaki bir dizinde nasıl kullanılır? Her birini kullanarak devretmek istediğim öğelerden oluşan bir koleksiyona sahibim, ancak bunların üzerinde bir dış döngü içinde döngü yapıyorum. Her birinde ne istediğimi bulduğumda, kırılmak için yanlış döndüm. Dış döngü bir sonraki seferde, geri döndüğümden sonra elemanın her birinde başlamak istiyorum. Bir jenerik kod örneği:jQuery: Her biri 0

var nextIndex = 0; 

for (var j=1; j <= someCount; j++) { 
    // do outside loop stuff 

    $('#someElemID').find('.someClass').each(function(index) { 
     if (/*this is right one*/) { 
      // do something 
      // next index should get passed to each function next loop... somehow? 
      nextIndex = index + 1; 
      return false; 
     } 
    }); 
} 

Ben döngü için geçiş hakkında düşündüm, ama sonra ben .find('.someClass') dan dönüş erişmek için nasıl olarak karıştı. Belki bu ayrı bir soru kendisi ...

Bu açık bir mi?

cevap

17

Kullanım http://api.jquery.com/slice/

$('#someElemID').find('.someClass').slice(nextIndex).each(... 

slice() Btw elemanları statik ise, önbelleğe alma düşünün: ölçüde performansını artırmak gerektiğini

var $elms = $('.someClass', '#someElemID'), 
    nextIndex = 0; 

for (var j = 1; j <= someCount; j++) { 
    // do outside loop stuff 

    $elms.slice(nextIndex).each(function(index) { 
     if (/*this is right one*/) { 
      nextIndex = index + 1; 
      return false; 
     } 
    }); 
} 

. gidiyorsun ne sıklıkta

$('#someElemID .someClass:gt(' + storedIndex + ')').each(function() { 
    ... 
+0

Bu, küçük bir değişiklik ile:

nameThisFunction = function(s) { var self = this; this.selector = $(s); return function(searchFor) { self.selector.each(function(i) { if (/*Do your comparision to searchFor*/) { // Do what you want self.selector.splice(i, 1); return false; } }); } }; var thisQueue = new nameThisFunction('#someElemId .someClass'); thisQueue('Search for something here'); 

İşte bir örnek keman var! Teşekkürler. Gt seçiciyi işaret etmek için –

6

başka olasılık o zaman doğrudan böyle saklanan endeksi sonra ortaya unsurları, seçmek için gt selector kullanabilirsiniz endeks unincremented saklamaktır Bunu çalıştırmak için ya da kaç farklı varyasyonlar ihtiyacınız var, ama uzayda yüzer nextValue bırakarak düşmüyorum. Böyle bir şey yapabilirdiniz, ki eğer yapacaksanız, birden çok farklı "kuyruk" yaratabilirsiniz. Bu maddeyi sadece bir kez bulmak istediğin gibi geliyor, ve bir kere bunu bir daha asla aramak istemiyorsun. Bu sadece yapmalı ve seçiciyi önbelleğe alarak çalışır. Aramalar arasında DOM'ı değiştiriyorsanız, diğer cevaplardan birini kullanın. Benim mevcut koduna az değişikliklerle gerekli tam olarak ne yaptığını, http://jsfiddle.net/robert/RCfeJ/

+2

+1. Bunu böyle kullanabileceğini bilmiyordum. Teşekkürler. –

3

Bilmiyorum:

+1

+1 çünkü bana başka bir şekilde gösterdiğin için bunu yapmayı düşünmemiştim. Bunu daha fazla düşünmeye ihtiyacım var ... öğrenecek çok şey var! Teşekkürler. –

İlgili konular