2011-05-12 56 views
0

我在外部文件中編寫了一些jQuery代碼,目標是在包含腳本的頁面中匹配每個<select>標記。在不調用顯式函數的情況下執行外部jQuery代碼

我的目標是在目標頁面的<head>標記中包含腳本引用,並「運行」jQuery代碼,而無需調用任何函數。

我已經看到幾個外部jQuery代碼的例子,但都調用一個函數來執行(外部)代碼。

如果我使用「普通」JavaScript,就像簡單的警報一樣,它們的執行沒有問題。當我嘗試使用我的jQuery代碼時,沒有任何反應。

這裏是我的外部jQuery的文件:

$(function() {  
    $("select").focus(function() { 
     alert('selected...'); 
    }).change(function() { 
     alert('changed...'); 
    }) 
}); 

即使我不使用$(function()一開始我總是得到的異常「預期目標」在$第一次出現,而即使在離開$(function()和在括號內有一個簡單的警報。

如何開發外部文件?

我在測試頁面內聯測試了外部腳本,它工作正常。

回答

0

這沒有什麼區別其中你的代碼編寫,在HTML頁面內聯,或通過<script src='...'>包括在內。

然後,問題就出現在您的代碼執行時尚未包含jQuery。看看你包括你的文件的順序,並確保jQuery在這個依賴於它的代碼之前。

+0

感謝nickf的建議。在MasterPage中,jQuery庫包含在標記中。在執行外部代碼之前,如何確保它包含在正確的時間? – Francesco 2011-05-13 16:39:03

+0

@Luca:把它放在包含jQuery的腳本標籤之後。 – nickf 2011-05-15 19:07:54

-1

試試這個:

$(document).ready(function() {  
    $("select").focus(function() { 
     alert('selected...'); 
    }).change(function() { 
     alert('changed...'); 
    }) 
}); 
+0

,它的功能相當於什麼,他已經擁有了 – nickf 2011-05-12 16:22:47

0

在加載jQuery之前,您可能正在執行jQuery代碼。在這種情況下,調用docready($(function(){}))會失敗,因爲$!== jQuery呢。平時要完成這樣的事情,我會把一些代碼對我的文件類似的底部:

$(function(){ 
    var t = "external_file.js", 
     s = document.createElement("script"), 
     h = document.getElementsByTagName("head"); 

    s.src = t; 
    s.type = "text/javascript" 
    h.appendChild(s); 
}) 
相關問題