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

  • Bobbylee Budde

    Bobbylee Bud

    13 ŞUBAT 2011
  • DeAdPiXel6667

    DeAdPiXel666

    2 Ocak 2010
  • Ionized Digital Air Studios

    Ionized Digi

    20 HAZİRAN 2009