这有效......
var start = $('.nodes:first>span>div');
var foo1 = $(".nodes:first>span>div>div>div>div>span>div");
var foo2 = $(".nodes:first>span>div>div>div>div>span>div>div>div>div>span>div");
var foo3 = $(".nodes:first>span>div>div>div>div>span>div>div>div>div>span>div>div>div>div>span>div");
var foo4 = etc,etc...
尝试巩固这样的事情......
var start = $('.nodes:first>span>div');
var separator = ">div>div>div>span>div";
var foo1 = $("start + 1*separator");
var foo2 = $("start + 2*separator");
var foo3 = $("start + 3*separator");
var foo4 = etc,etc...
已经糊里糊涂了几个小时,但这种语法让我感到惊讶!有什么指针吗?谢谢!
答案 0 :(得分:4)
find()方法似乎应该这样做。
var $start = $('.nodes:first>span>div');
var separator = ">div>div>div>span>div";
var $foo1 = $start.find(separator);
var $foo2 = $foo1.find(separator); // etc...
如果可能的话,我会尝试简化您的HTML,因此您不需要这么多的选择器。这种代码看起来像是一个噩梦,如果你需要回到它以后修复某些东西,那将是一个噩梦。
答案 1 :(得分:3)
选择器只是字符串,因此您只需将字符串添加到一起并将它们用作选择器。
var start = '.nodes:first>span>div';
var separator = ">div>div>div>span>div";
var foo1 = $(start + separator);
var foo2 = $(start + separator + separator);
var foo3 = $(start + separator + separator + separator);
但是,如果我们理解你想要实现的目标,那么使用较少的复杂功能可能会有更好的方法。例如,您可能应该使用不同类型的div和spans上的类,然后定位特定的类,而不考虑有多少个div的中间层。这使得您的代码变得更加简单,更不易碎,并且与确切的HTML实现相关联得更少(它仍然具有一些依赖性,但不是那么多)。
仅供参考,据我所知,你不能将字符串相乘以获得它们的多个副本,因此2*str
不会为你提供一个连续两个str
副本的字符串。< / p>