Ограничить все селекторы jQuery дочерними элементами определенного элемента - PullRequest
1 голос
/ 14 ноября 2010

Я, конечно, знаю, как выбрать ограничить селектор jQuery дочерними элементами определенного элемента каждый раз, когда я делаю выбор (т. Е. $ ('# Left ul') выбирает все ul, которые являются потомками #left).Хотя это достаточно просто, если я собираюсь выполнить несколько операций для различных потомков #left, немного громоздко будет продолжать писать $ ('# left ul'), $ ('# left p'),$ ('# осталось ...').Вместо этого я предпочел бы просто иметь возможность временно ограничивать потенциальные селекторы только потомками #left.Например:

...some code that established #left as the "scope" of any future selectors;
$('ul').css(...); //actually selects $('#left ul')
$('p').css(...); //actually selects $('#left p')

...some code that re-established the full DOM as the "scope";
$('ul').css(...); //selects all ul, not just children of #left
$('p').css(...); //selects all p, not just children of #left

Спасибо!

Ответы [ 2 ]

2 голосов
/ 14 ноября 2010

Просто положитесь на контекст и найдите.

var $l = $('#left')
  , ul = $l.find('ul')
  , p = $l.find('p');
0 голосов
/ 14 ноября 2010

Метод "$" может принимать 2 аргумента: селектор и контекст.Таким образом, вы можете использовать следующий синтаксис:

$('.children_selector',$('.the_parent_selector'))

Но, чтобы избежать использования $ (селектор, контекст).Вы можете написать функцию, «переопределяющую» функцию $, и написать свой код внутри.Взгляните:

            (function($)
            {
                //here the $ selects the elements inside the first element with the class xpto
            })(function(a){return $(a,$('.xpto')[0]);});

В любом случае, мне не хотелось бы находить такую ​​конструкцию.В целях обслуживания лучше получить больше строк кода, чем меньше строк неясного кода.

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