2014-06-17 79 views
-6

是什麼區別:...將onmousedown事件添加到純JavaScript中的文檔中?

$(document).mousedown(someFunction); 

document.addEventListener('mousedown', someFunction, false); 
+5

「如何使用純JavaScript實現jQuery $(document)對象?」這絕對沒有意義。如果你想要一個jQuery對象,如果不使用jQuery函數,你還有什麼可以獲得的呢? – BoltClock

+5

'我注意到它不是等價的'它以哪種方式不是? –

+1

這兩件事* *是等價的。實際上,jQuery在內部使用['addEventListener'](http://james.padolsey.com/jquery/#v=1.10.2&fn=jQuery.event.add)來綁定事件。附:在執行'addEventListener'時(這隻對IE的'attachEvent'需要)失去''on''。它應該是'document.addEventListener('mousedown',someFunction,false);' –

回答

5

$(document)是一個jQuery對象,而document是一個DOM對象。

只有在加載jQuery後,jQuery才允許您使用$()語法作爲jQuery對象與文檔進行交互。如果沒有加載jQuery,就沒有辦法把它當作jQuery對象,因爲這種類型的對象沒有定義。

單獨使用document可以做很多事情,其中​​HTML和JavaScript是主要的,但是如果您想要jQuery功能,您必須包含它。

奇妙的document$(document)引物可以找到here

要回答粗體顯示的問題(如何使用純JavaScript實現一個jQuery的$(document)對象):

你將不得不重新編寫的JavaScript jQuery的功能。這是不值得的努力,但絕對有可能。

而且,爲解決編輯:

<script language="javascript"> 
    document.onmousedown = myMouseDownHandler; 

    function myMouseDownHandler() { 
     alert("A mouse down event took place within the document!"); 
    } 
</script> 

正如@cookie_monster提到的,如果你想使用document.addEventListener()使用mousedown代替onMouseDown;沒有「開」,也沒有特殊的大寫字母。

jsFiddle

+0

我懷疑OP是否理解'$()'語法實際是什麼。你聽起來有點像它只是jQuery中的某種獨特的JavaScript語法。也許你應該具體解釋發生了什麼。 –

+0

據我所知'$()'是一個將jQuery函數添加到對象的包裝器。我發佈的CodeAcademy鏈接應包含更多細節。 – Gavin42

+0

這是一個包裝?不,這不是它*的*。 –

相關問題