我知道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
答案 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'