2009-02-06 46 views
2

我知道jQuery.extend可以用來將自定義方法添加到DOM元素等對象中,但Prototype的Element.extend將所有DOM元素輔助方法添加到目的。這是我以後的功能。什麼是Prototype的Element.extend的jQuery相當於

例如

this.panel = document.createElement('div'); 

我想this.panel要到新的div的引用,也有與它相連的得心應手元素包裝方法。

我可以通過包裝調用close一些與jQuery來的createElement()

this.panel = jQuery(document.createElement('div')); 

但返回一個數組。我只想要這個元素。

別人做什麼?

TIA

帕特龍

回答

5

jQuery策略是永遠不會擴展本地DOM對象。

在jQuery中包裝一個元素是要走的路。結果不是數組,它是一個jQuery對象(類似於數組),但是擴展的jQuery方法可用。

作爲一個提示,如果你想創建元素,你可以使用jQuery HTML解析功能,它可以比使用DOM創建方法更容易地創建複雜的DOM樹。

也許你想這樣的事情

// Creates a DIV node with some attributes and text inside, and append it to the body 
this.panel = jQuery('<div class="myClass" id="myPanel">My panel</div>').appendTo('body'); 
+1

感謝這就很清楚,「jQuery的政策是永遠不會延長原生DOM對象」,恥辱,我喜歡Prototyopes方法。 我真的不喜歡用jQuery來解析一個動態的HTML字符串。它似乎這麼老派,就像使用innerHtml – 2009-03-09 13:59:18

0

可以使用jQuery對象中選擇一個元素:

你的情況
$(selector).eq(0): //this will select the first element 

所以:

this.panel = $(document.createElement('div')).eq(0); 

但你也可以做:

this.panel = $('<div></div>'); 

這樣做也是一樣。

此外,如果你想擴展jQuery的功能:如果你做這樣的事情

jQuery.fn.myOwnFunction = function(){ 
this.each(function() { 
    alert($(this).attr('name')); 
} 
} 

然後:

<input name='bla'> 
<input name='foo'> 

$('input').myOwnFunction(); 

會提醒: '喇嘛',然後 '富'