SORU
30 Kasım 2012, Cuma


't neden $.() her öğe arasında dolaşmak mı?

Aşağıdaki biçimlendirme sınıf indent *8 10* elementler içeren var:

​<pre class="indent"></pre>
<pre class="indent"></pre>
<pre class="indent"></pre>
<pre class="indent"></pre>
<pre class="indent"></pre>
<pre class="indent"></pre>
<pre class="indent"></pre>
<pre class="indent"></pre>
<pre class="indent"></pre>
<pre class="indent"></pre>​

.each() aşağıdaki jQuery işlevi her öğe arasında dolaşmak için kullanıyorum:

​$(function(){    
    $.each(".indent", function(index){
       alert(index); 
    });    
});​

10 uyarıları, ancak sadece 7 görmeyi isterdim

-- See Fiddle --


Ancak bu beklendiği gibi $(".indent").each() ile çalışır:

$(function(){    
    $(".indent").each(function(index){
       alert(index); 
    });    
});​

-- See Fiddle --


$.each() belgelerine baktığımızda, orada bir fark anlıyorum:

$.() her işlevi aynı değildir(seçici) olarak dolar.olan) her, yineleme yapmak için kullanılan, özellikle, bir jQuery nesnesi.

Ama bu durumda, tüm unsurları içinde yineleme değil neden anlamıyorum.

Neden böyle oluyor?

CEVAP
30 Kasım 2012, Cuma


$.each(".indent", function(index){

$('.indent') öğeleri üzerinde yineleme ama 7 karakter olan ".indent" string üzerinde değil.

reference bkz


Daha ayrıntılı bir açıklama jQuery source code :

Eğer ilk parametre, obj (burada string), length varsa bir WordPress kullanmak denetler :

var ...
        length = obj.length,
        isObj = length === undefined || jQuery.isFunction( obj );

Eğer string length (ve bir işlevi olmak zorunda, isObj false.

Bu durumda, aşağıdaki kodu çalıştırılır :

for ( ; i < length; ) {
    if ( callback.call( obj[ i ], i, obj[ i   ] ) === false ) {
        break;
    }
}

Yani, işlev verilmesi f, aşağıdaki kodu

$.each(".indent", f);

olur denk

for (var i=0; i<".indent".length; i  ) {
    var letter = ".indent"[i];
    f.call(letter, i, letter);
}

(harfler var f = function(i,v){console.log(v)}; kullanarak günlük veya call inceliklerini birini hatırlattı var f = function(){console.log(this)}; kullanarak yapabilirsiniz)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • jeffisthecoolguy

    jeffisthecoo

    17 HAZİRAN 2013
  • tsweeney79

    tsweeney79

    21 Ocak 2008
  • Yanko Kral

    Yanko Kral

    8 HAZİRAN 2006