2012-06-07 127 views
2

我試圖瞭解jQuery中的'load'事件,如下所述:http://api.jquery.com/load-event/。到目前爲止,我一直無法觸發它!jquery加載事件從未觸發

這是一些示例代碼。唯一出現的控制檯消息是「DOM READY」 - 不是一次加載調用。使用.bind('load',..)替換對.load()的調用沒有任何區別。

<!DOCTYPE html> 
    <html> 
    <head> 
      <script src="lib/jquery.min.js"></script> 
      <script> 
      $(function(){ 
       console.log("DOM READY"); 
      }); 
      $(document).load(function(){ 
       console.log("Document Loaded"); 
      }); 
      $('#foo').load(function(){ 
       console.log("foo loaded"); 
      }); 
      $('#bar img').load(function(){ 
       console.log('image loaded'); 
      }); 
      $('#bar').load(function(){ 
       console.log('bar loaded'); 
      }); 
      </script> 
    </head> 
    <body> 
    <div id="foo">Hellow world</div> 
    <div id="bar"> 
     <img src="pics/pig.png"/> 
    </div> 
    </body> 
    </html> 

我在做什麼錯?

+0

@ j0869 1它也適用於OP,*唯一出現的控制檯消息是「DOM READY」*。 – Sampson

+0

甚至可以訪問'$(「#foo」)'它已經必須被「加載」了...... – Esailija

回答

1

如果您使用的document.ready事件做你的綁定,這樣保證了要素存在:

$(document).ready(function(){ 
    $('#foo').load(function(){console.log("foo loaded");}); 
} 
+1

偉大的答案 - 我插入它,看到我的問題的其餘部分(div沒有與喬納森指出的URL關聯)。謝謝! – KateYoak

7

您無法綁定到尚不存在的項目。例如,當你做到以下幾點:

$('#foo').load(function(){ 
    console.log("foo loaded"); 
}); 

#foo項目不存在,所以你不能綁定到其加載事件。還要注意哪些文件必須說.load事件本身:

此事件可以被髮送到與URL相關聯的任何元素:圖片,腳本,框架,內部框架,和窗口對象。

您的div元素不會「加載」。

+0

但爲什麼'$(function(){}'工作呢?這就是' $(document).ready();' – 11684

+0

@ 11684它的確如此.OP表示*唯一的控制檯消息是「DOM READY」*。 – Sampson

+0

糟糕,誤讀......這很奇怪,上次我試過它沒有工作@JonathanSampson – 11684

0

正是喬納森說。如果你想要一個例子,我建議看看這個網站上的文檔:http://api.jquery.com/ready/

它具有很好的參考再加上我通過你的榜樣明白,你要保持它的簡單,所以這就是你會發現什麼在這裏

0

我試圖重現你的例子,並且正如別人所說只有DOM READ被解僱了。

我也修改了腳本,並嘗試獲取負載以處理img,a,div和腳本元素。沒有開火。

我也試過在窗口對象傳遞(畢竟這一個「窗口」事件這沒有工作

我的結論是,儘管jQuery的文檔,它只能與窗口對象的工作:。

$(window).load(function(){ 
    alert("window loaded"); 
}); 

我只在chrome中測試過,並且只測試了我提到過的元素,我個人只會使用document.ready功能,根據文檔.load與圖片無法很好地工作。功能: