2010-09-01 104 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