2011-07-02 20 views
6

Belge öğesi için jQuery ready() işlevini kullanmak istiyorum. İşte benim komut şunlardır:jQuery ready() işlevi aynı öğe için iki kez kullanılabilir mi?

1 sayfa:

$(document).ready(function(){ 
      $('form#haberekle').ajaxForm(options); 
}); 

2 sayfa: Bu iki sayfa <!--#include file=""-->

ile aynı ana sayfada bulunduğundan

$(document).ready(function() { 
    var options = { 
     success:showResponse, 
     beforeSubmit:showRequest, 
     resetForm:true 
    }; 
    $('#haberresmiekleform').ajaxForm(options); 
}); 

Can Bu iki işlev düzgün çalışıyor mu, yoksa birbirlerini mi engelliyorlar? Deneyimlerime göre düzgün çalışıyorlar. Örneğin

: bir düğme onclick fonksiyonu sadece bir tanesidir.

cevap

10

istediğiniz kadar çok .ready() çağrıları olabilir, jQuery bu düşünce ile tasarlanmış ve kesinlikle Tamam edilir. Bu her zaman olur ...

Yani evet, bu Tamam olduğunu ve herhangi bir sorun yok olacak . .click() gibi bir olay işleyicisi olarak bunun

Think, bu (iyi, kesinlikle değil tam konuşan, ancak bu gibi en amaçlar için) Nasıl davrandığı tam olarak budur. Yani istediğin kadar alabilirsin. ilginizi çekebilecek

Bir daha dikkat, işleyicileri onlar sayfanın onları denilen sırayla idam ettirmekle anlamına gelir readyList için .done() aracılığıyla .ready()are pushed içine geçmektedir. Aynı sipariş davranışı, jQuery'nin önceki sürümlerinde (bir dizi aracılığıyla farklı bir yöntem olsa da) doğrudur.

2

Evet, bu iyi. Dom tamamen dolu olduğunda her ikisi de çağrılacak.'dan sonra .ready()'u çağırırsanız dom zaten yüklenmiştir, geri arama hemen yürütülecektir. http://api.jquery.com/ready/

1

Sorun aynı etkinlik için çeşitli işleyicileri takılarak. ready belgeleri diyor ki:

da $ (document) .bind ("hazır", işleyici) yoktur. Bu hazır yönteme benzer şekilde davranır ancak bir istisna dışında: ("hazır") hazır olay zaten ateş ve .bind deneyin ise sınır işleyicisi yürütülmez.

Ve bind belgeleri diyor ki:

bir olay unsurunu ulaşır

, eleman için bu etkinlik türüne bağlı tüm işleyicileri ateşlenir. Kayıtlı birden işleyicileri varsa, bunlar her zaman

+0

Aslında '.ready()' .bind() '' için bir kısayol değil, gördüğünüz bağlı edildiği sırayla çalıştırır Burada kaynak: https://github.com/jquery/jquery/blob/master/src/core.js#L255 Yine de benzer şekilde davranır. –

+0

Doğru. Cevabımı düzelttim. Teşekkürler. –

İlgili konular