2011-11-02 20 views
6

çalışır emin olun Ana sayfaları kullanan bir MVC 2 web uygulaması var. usta sayfalarında, hemen altında dosyanın KezaNasıl jQuery .ready zaten

$(document).ready(function() { 
    ... 
}); 

dağılmış gibi birçok hazır bloklar vardır, benim görüş birçoğu da birden hazır bloklar dağılmış var.

Son olarak çalışacak Master'a başka bir hazır blok eklemem istenmiştir.

Sorum şu: "Bu yeni hazır bloğun son kalacağını garanti etmenin bir yolu var mı?". Benim düşüncem şuydu ki, eğer onu ana sayfanın en alt kısmına koyarsam bunu yapardım ama kendimin bunun kesin olduğuna inanıyorum.

+3

Nasıl çalıştığını anladığım kadarıyla, sayfada sonuncusunun yeterli olduğundan emin olun. –

+0

Web sayfası Ana ve MVC görünümüne göre sunucuda "bestelenmiş" olduğundan, ana dosyanın sonuna $ (document) .ready() yerleştirmenin hileyi yapmasını garanti edebilir miyim? – wcm

cevap

5

Bu, tüm geri aramaları listesine $(document).ready() 'nin geri arama itmek denir jQuery'nin .add yöntemdir:

add = function(args) { 
    var i, length, elem, type, actual; 
    for (i = 0, length = args.length; i < length; i++) { 
     elem = args[ i ]; 
     type = jQuery.type(elem); 
     if (type === "array") { 
      // Inspect recursively 
      add(elem); 
     } else if (type === "function") { 
      // Add if not in unique mode and callback is not in 
      if (!flags.unique || !self.has(elem)) { 
       list.push(elem); 
      } 
     } 
    } 
} 

kaynak: jQuery's callback

Yani: temelde bastırıyor mu neyi tüm list dizisindeki ve olay tetiklendikten sonraki işlevler - aynı sırayla onları arayın ve işleviniz en son itildiyse - son aranır.

diğer tüm .js dosyaları da dahil olmak sonra bile kafasına ilan edebilir son itin için (hemen altında başka $(document).ready() orada olmadığından emin olun)

+0

Web sayfası Ana ve MVC görünümüne göre sunucuda "bestelenmiş" olduğundan, ana dosyanın sonuna $ (document) .ready() yerleştirmenin hile yapmasını garanti edebilir miyim? – wcm

+0

BTW, kodu açıkladığınız ve gösterdiğiniz için teşekkür ederiz. – wcm

+0

@wcm Eminim eminim :) – Teneff

0

Burada biraz hile yapabileceğinizi düşünüyorum. Ben senin çözüm sığmalı tam durumunu bilmiyorum olarak , burada senin cuntion milisaniye cinsinden * gecikme süresi *) için

window.setTimeout(bir çağrı yoluyla bir gecikme eklemenizi öneririz;

Biliyorum, o kadar da zarif değil, ama düşündüğüm şey buydu, eğer bu size yardımcı olduysa bana bildirin.

1

İşte ben kullanmak bir hile. son çalıştırmak için gereken kodun biraz olduğunda Usta Sayfa yılında, çocuk sayfalarında, Sonra

var postReadyEvents = []; 

beyan (Ana Sayfa Doları cinsinden, Şimdi belgeyi

postReadyEvents.push(function() { 
    ///your stuff - I usually use this to resize a grid or something. 
}); 

do Eğer çocuk sayfaları ve ana sayfaları hem $ (document) .ready() olduğunda) .ready(),

for(var i = 0; i < postReadyEvents.length; i++) 
{ 
    postReadyEvents[i](); 
} 

yapın çocuk sayfa ilk çalışır ve ana sayfa son olarak çalışır. Bu yaklaşım, belirli bir kod bloğu çalıştığında kontrol etme yeteneği sunar.

İlgili konular