不确定如何表达这个问题所以它足够通用。 (并且在我知道我在问什么之后会重新措辞)。问题,我认为处理JQuery .find()
函数中的变量。 击>
问题:您可以围绕一个DOM元素数组或围绕jQuery对象包装$()
,但不能围绕jQuery对象数组
我现在能做的最好的就是提供一个例子here
前一个小提琴中的问题代码在这里:
////////////////Neither of the following works////////////////
//nodelevel = nodesWithMinuses.find('div.node.level' + levelnumber);
nodelevel = $(nodesWithMinuses).find('div.node.level' + levelnumber);
////////////////Neither of the previous works////////////////
答案 0 :(得分:6)
Apparently你可以围绕一个DOM元素数组或jQuery对象包围$()
,但不能围绕jQuery对象数组。
尝试更改此行:
var nodeWithMinus = thisplusminus.parent().parent();
到此:
var nodeWithMinus = thisplusminus.parent().parent()[0];
这将提取DOM元素并将nodesWithMinuses
转换为DOM元素数组。
答案 1 :(得分:2)
变量nodesWithMinuses
是jQuery对象的数组。您不能将jQuery方法应用于除jQuery对象之外的任何其他方法。您有两个选择:要么将nodesWithMinuses
声明为jQuery对象,要通过add
方法向其添加对象:
var nodesWithMinuses = $();
//...
nodesWithMinuses.add(element);
// instead of nodesWithMinuses.push(element);
找到将数组转换为jQuery对象的方法:
$($.map(nodesWithMinuses,function(el,i){return el.get(0)})).find('div.node.level' + levelnumber);
或遍历数组并一次搜索每个对象中的元素:
var result = $();
$.each(nodesWithMinuses,function(i,el){
result.add(nodesWithMinuses.find('div.node.level' + levelnumber));
});
console.log(result);
答案 2 :(得分:1)
在你的代码中,nodeWithMinuses
是一个数组,但你试图将它包装在jQuery函数中。这对阵列不起作用。在jQuery的find
函数中使用变量就可以了。