Переменные внутри селекторов JQuery - PullRequest
2 голосов
/ 16 ноября 2011

Это работает ...

    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...

В течение многих часов путался, но синтаксис этого ускользает от меня! Есть указатели? Спасибо!

Ответы [ 2 ]

4 голосов
/ 16 ноября 2011

Метод 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, чтобы вам не нужно было так много селекторовхоть.Этот вид кода, похоже, станет кошмаром для понимания, если вам нужно вернуться к нему, чтобы исправить что-то позже.

3 голосов
/ 16 ноября 2011

Селекторы - это просто строки, поэтому вы просто добавляете строки вместе и используете их как селектор.

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 в ней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...