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

  • Jeremy Stark

    Jeremy Stark

    23 Mayıs 2010
  • rtisticsdev

    rtisticsdev

    31 Mayıs 2012
  • Skittles Page

    Skittles Pag

    28 Mart 2011