Javascript JQuery选择器中的变量

Javascript JQuery选择器中的变量,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,这很有效 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

这很有效

    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...
我已经糊涂了好几个小时了,但是我不知道它的语法!有什么建议吗?谢谢

这个方法似乎应该做到这一点

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,这样你就不需要那么多选择器了。这类代码似乎是一场噩梦,如果您需要稍后再使用它来修复某些东西,那么理解它将是一场噩梦。

选择器只是字符串,所以您只需将字符串添加到一起,并将它们用作选择器

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和span上使用类,然后以特定的类为目标,而不考虑中间有多少层div。这使您的代码更加不脆弱,与确切的HTML实现的联系也更少(它仍然有一些依赖项,但没有那么多)


仅供参考,据我所知,您不能通过对字符串进行乘法来获得它们的多个副本,因此
2*str
无法获得包含两个连续副本
str
的字符串。

可能的重复我想问一下是否有办法简化这些选择器/您的HTML结构…谢谢,jfriend00。。。如果你有大量的foo(比如1000)?想知道“for语句”是什么样子吗?您不希望构造包含1000个项的选择器。这只是解决问题的错误方法,可能会执行得非常慢。如果您考虑需要这样做,那么您将以错误的方式处理您的问题,最好描述实际问题(包括示例HTML),我们将为您提供更好的方法。好吧,这不是1000,但fooX将不断波动。看起来我们要添加一些类来创建一个可选的层结构…谢谢你的建议!