2013-02-15 71 views
1

有没有一种简单的方法来获取与JQuery查询匹配的节点列表(包括给定的节点)?jquery和获取遍历API

我想过使用.find方法如下:如果你想匹配的查询元素组成的dom及其内容的一组内搜索

var getNodes = function(dom, query){ 
    var nodes = $(dom).find(query || '*'); 
    nodes.splice(0,0,dom); 
    return nodes; 
} 

奥利维尔

+0

你是什么意思的“节点列表包括给定节点”? – Manishearth 2013-02-15 13:08:25

回答

3

,那么你就可以做

$(dom).find(query).add($(dom).filter(query)) 

$(dom).find(query).addBack().filter(query); 

一个更简单的一个(但如果有很多孩子慢)将

$(dom).find('*').addBack().filter(query); 
+1

你可能意思是'.addBack()':) – kidwon 2013-02-15 13:10:21

+1

@kidwon是的,我被'addBack'替换'andSelf''而感到不安... :) – 2013-02-15 13:11:24

+0

在我看来''andSelf'这个名字是最好的 – kidwon 2013-02-15 13:29:25

0

jQuery中$()事情的结果是jQuery不是一个JavaScript数组的一个实例。你可以做的是这样的:

var nodes = [ dom ]; 
var found = $(dom).find(query || '*'); 
$.each(found, function(item) { nodes.push(this); });