2013-03-01 53 views
1

HTML文件事件:點擊不會觸發寫在一個外部的jQuery文件

<html> 
    <head> 
    </head> 
    <body> 
     <script src="jquery.min.js"></script> 
     <script src="popup.js"></script> 
     <div id="clickem">click me</div> 
    </body> 
</html> 

popup.js:

$("#clickem").click(function() { 
    alert("I was clicked."); 
}); 

嗯......所以當我做什麼也沒發生。

+0

您可以使用DOM就緒事件,*或*將您的腳本包含在正文中,這正在變得越來越流行。 – 2013-03-01 11:59:02

+0

5同一答案應該可能幫助你 – George 2013-03-01 12:00:43

回答

3
$(document).ready(function(){ 
$("#clickem").click(function() { 
    alert("I was clicked."); 
}); 
}); 

將您的代碼包裝在document.ready中。

+0

謝謝...:D .... – 2013-03-01 12:07:32

+0

@SasukeKun你應該接受答案.. – 2013-03-01 12:27:29

+0

我還記得:3 ...其實我需要等5分鐘,所以我可以當時接受 – 2013-03-02 09:56:47

1

使用DOM ready事件:

$(function(){ 
    $("#clickem").click(function() { 
     alert("I was clicked."); 
    }); 
}); 

<div id="clickem">click me</div>在查詢DOM尚未呈現。
當您向jQuery「構造函數」發送函數時,它將在DOM準備就緒時執行它。

$(function() { });相當於$(document).ready(function() { });
所以,他們都可以使用。

+0

稍作解釋將有助於改善您的答案。 – 2013-03-01 11:59:12

+0

@AspiringAqib,完成。 – gdoron 2013-03-01 11:59:50

+0

完成。刪除那些垃圾的東西。 – 2013-03-01 12:25:11

0

什麼也沒有發生

因爲之前的DOM元素已經準備好您的點擊事件被調用。所以它將無法找到ID爲clickem的元素。 準備調用函數內部腳本

$(function(){ 
    $("#clickem").click(function() { 
    alert("I was clicked."); 
    }); 
}); 

這將調用你的腳本後DOM準備好這樣的單擊事件,現在能夠找到的元素,因此提醒吧..

總是recommned你寫劇本寫好函數中...

0

您需要的文件準備

$(document).ready(function(){ 
$("#clickem").click(function() { 
    alert("I was clicked."); 
}); 
}) 
0

一套動作這很可能是因爲您的012在DOM完成加載元素之前,文件正在運行。

因此,選擇器#clickem的單擊事件處理程序不會找到任何項目。

通過$(document).ready()功能包事件處理程序,這將確保DOM完成加載:

$(document).ready(function(){ 
    $("#clickem").click(function() { 
     alert("I was clicked."); 
    }); 
}); 

現場演示:http://jsfiddle.net/XfFu8/

0

的#clickem是不存在的DOM時你綁定click事件。使用.on()將事件綁定到它們的任何current or future元素document。在這種情況下,您不需要使用$(document).ready()

popup。js

var onClickEm = function() { 
    alert("I was clicked."); 
}; 

$(document).on('click', '#clickem', onClickEm); 

另一種選擇是推遲加載JavaScript文件。

<html> 
    <head> 
    </head> 
    <body> 
     <script src="jquery.min.js"></script> 
     <script src="popup.js" defer></script> 
     <div id="clickem">click me</div> 
    </body> 
</html> 

Defer,如果存在,指定當頁面已完成解析執行腳本。

相關問題