什么是原型的Element.extend的jQuery等价物

时间:2009-02-06 11:20:35

标签: jquery

我知道jQuery.extend可以用来通过自己的自定义方法添加到一个对象(如DOM元素),但Prototype的Element.extend将所有DOM元素帮助器方法添加到对象中。这是我追求的功能。

例如

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

我希望this.panel是对新div的引用,但也附加了方便的元素包装器方法。

我可以通过使用jQuery()

包装对createElement的调用来获得一些东西
this.panel = jQuery(document.createElement('div'));

但返回一个数组。我只想要元素。

其他人做了什么?

TIA

Pat Long

2 个答案:

答案 0 :(得分: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 :(得分: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(); 

将提醒:'bla'然后'foo'