2010-09-01 72 views
0

我正在创作一个插件,插件需要做一些工作,比如聚合一组jQuery对象。如何做到这一点?聚合一个jQuery对象?

例如:

<p><a>...</a></p> 
<p><a>...</a></p> 

随着

(function($) 
{ 
    $.fn.myfunc = function(settings) 
    { 

    }; 
})(jQuery); 

内的$( 'P')调用该插件的情况下MYFUNC(),我将如何返回所有的元素,例?我要返回的元素不一定会被包含或接近所选元素,因为这只是一个示例。

+0

请澄清你的意思是什么聚合?你是否想要包含不属于原始选择器的对象?你基本上想要这个功能 - '$('p').add('a')'? – Anurag 2010-09-01 15:07:55

回答

1

jQuery还接受一个数组,因此您可以构建自己的节点堆栈并从中创建一个jQuery对象。

例子:

(function($) 
{ 
    $.fn.myfunc = function(settings) 
    { 
     var stack = []; 
     stack.concat(this.find('a').toArray()); 
     stack.concat($('a.hot-links').toArray()); 
     return $($.unique(stack)); 
    }; 
})(jQuery); 

或者干脆:

return this.find('a'); // as return result of plugin 

而且,看.pushStack(),添加元素添加到现有的jQuery对象,它可以让。

+0

正是我需要的。 – 2010-09-01 15:17:19

+0

稍微澄清一点,'.pushStack()'不会向jQuery对象添加任何元素,它会返回一个带有元素组合的* new * jQuery对象,旧/原始对象仍然具有相同的元素。 – 2010-09-01 15:29:44

+0

@nick,很好的捕获,基本上你可能还可以和数组一起工作,并在完成时创建一个新的jQuery对象。虽然不需要进行分钟连接时。 – BGerrissen 2010-09-02 16:05:15