2010-11-22 19 views
1

hey guys, hızlı soru: bir web sitesinde iki $(window).load(function(e){ işlevlerini kullanmak mümkün ve semantik mi?jquery and javascript: iki yükleme işlevi?

örn. Bazı jquery ile <script> etiketi tutan bir header.php var - $(window).load(function(e){ bunun bir parçası. Bunun altında yine bir $(window).load(function(e){ olan bir harici .js dosyasına bağlayan başka bir etiket var.

buna izin verilir ve tamam mı?

Teşekkürler!

cevap

4

Evet. Yaptığınız her load() beyanı, mevcut işleyiciye eklenecektir.

bir olay bir eleman ulaşır

, elemanı için bu olay tipine bağlı olan tüm yükleyiciler ateş edilir: ( load() kısayol için fiili çalışma işleme fonksiyonudur) docs on .bind() kaynaktan

. Birden fazla işleyici kayıtlıysa, her zaman bağlı oldukları sırayla çalışırlar. Tüm işleyiciler yürütüldükten sonra, olay normal olay yayılma yolu boyunca devam eder.

1

.load() fonksiyonu (ve diğer olay ile ilişkili fonksiyonlar) bu olay giderici sırasına zaman olayı olarak yerleştiren bir işlevi kabul eder.

Yani, daha doğrudan sorunuzu yanıtlamak için, evet.

0

Şimdi nasıl mümkün olabileceğinden bahsettik? Sayfanız tamamen yüklendiğinde, aramak istediğiniz birden fazla etkinliğiniz olduğunu varsayalım. Konsept hakkında daha fazla bilgi edinmek ve anlaşılması kolay olması için bunu JavaScript numaralı telefondan inceleyelim.

var pageLoadEvents = []; 

Sayfa yüklü olduğunda aramak istediğimiz tüm etkinliğimizi koruyacağımız bir dizi oluşturduk.

pageLoadEvents.push(function() { 
    alert("hello!"); 
}) 

Ve: Şimdi, sayfa yükleme ve hepsi üzerinde yükseltmek istiyorum tüm etkinliklerinizi tanımladığınız

pageLoadEvents.push(function() { 
    alert("How are you doing?"); 
}) 

bir pageLoadEvents dizide bulunmaktadır. Biz pageLoadEvents dizide tutmak

window.onload = function() { 
for(var index=0; index<pageLoadEvents.length; index++) { 
    pageLoadEvents[index](); 
} 
} 

Tüm etkinlikler tek tek yürütülecektir: Burada, bizim nihai parça yazmak.

bunu içerik tutmak bir load$(window) çağırıyoruz her zaman (örneğin fonksiyonunu (e) {..}) Bir dizide bir load tanımlanan ve nihayet bunların her çalıştırabiliriz.