2011-10-11 30 views
1

$("div")[5].animate()使用jQuery就可以做這樣的事情擴展HTML元素

這似乎對我來說,在某種程度上,開發商使用prototype擴展HTMLElement

我現在的問題是:他們是怎麼做到的?由於HTMLElement.prototype在IE中不起作用,我想知道是否有跨瀏覽器方法來對HTML元素進行原型設計。

謝謝!

+1

你是否想要做一些像$(「div」)。eq(5).animate()? –

+0

根據http://api.jquery.com/animate/ 語法是像$(「#書」)。動畫(...) 其中,$(「#書」)僅僅是一個選擇,這意味着每一個HTML元素似乎「繼承」該方法 –

+0

我不watn不做點什麼具體地說,它只是一個如何跨瀏覽器的擴展/ prototypeing HTML元素 –

回答

2

你不能在IE中擴展這些東西; IE只是沒有這樣實現DOM接口。這就是爲什麼Prototype強制你用這些附加方法「包裝」你想操作的元素。

+0

我不是在談論的框架原型。顯然,它可能是因爲它在jQuery中使用。 –

+1

不,jQuery沒有直接擴展DOM元素接口(Prototype *的擴展方式)。在支持它的瀏覽器中,Prototype庫使用其他方法擴展了DOM元素原型。但是,它不能在Internet Explorer中執行此操作。 – Pointy

2

jQuery的工廠函數(jQuery()$()不返回DOM節點

jQuery的工廠函數返回一個新jQuery.init實例,其作用非常類似的陣列。相反延伸的任何DOM節點的原型的,更多的功能被簡單地加入到jQuery.fn

如果函數是在jQuery選擇鏈的,其通常適用於所有包含在jQuery.init實例中的元素。

我強烈建議通過commented jQuery source閱讀,這樣你可以清楚地看到發生了什麼幕後的。

1

注意$('#book') !== document.getElementById('book')
第一個是引用DOM元素並可以擴展的jQuery對象,而第二個實際上是DOM元素。

相關問題