jQuery (elementArray) - выбирает только потомков элементов массива - PullRequest
1 голос
/ 28 марта 2012

Конструктор jQuery может принимать массив элементов.

jQuery( elementArray )

Я неправильно понимаю использование параметра elementArray, или это ошибка jQuery?

Предположительно, все примененные селекторы будут применяться к всем элементам HTMLE, которые являются элементами или потомками элементов в массиве. Тем не менее, похоже, что он выбирает только children элементов массива.

Например, в массиве со следующим содержимым он не будет сопоставлять элементы с классами topLevelDiv или topLevelSpan.

elementArray[0] contains
    <div class="topLevelDiv">
        <span class="childSpan"></span><div class="childDiv"></div>
    </div>
elementArray[1] contains
    <span class="topLevelSpan">
        <span class="childSpan"></span>
    </span>

Это верно, используется ли elementArray как контекст или как объект для переноса и вызова find ()

$('div', elementArray)
// OR
$(elementArray).find('div')

Вот демонстрация: http://jsfiddle.net/A49VV/1/

Ответы [ 2 ]

1 голос
/ 28 марта 2012

jQuery работает должным образом, когда вы делаете find или предоставляете 2-й параметр для контекста, вы ищете в элементах, указанных для того, что вы хотите. Если вы хотите фильтровать по верхнему узлу в вашем elementArray, вам нужно использовать функцию filter.

0 голосов
/ 28 марта 2012

jQuery( elementArray ) создает объект jQuery, в котором есть все элементы массива.Любая операция, которую вы применяете к этому объекту jQuery, будет применена ко всем элементам в массиве.

Так что, если вы сделаете это:

jQuery( elementArray ).css("color", "red");

, он превратит текст во все эти красныеэлементы.Операция jQuery будет применена к этим конкретным элементам.Он не будет применен непосредственно к дочерним элементам этих элементов.Влияет ли это на детей, зависит от операции.Это как разработано jQuery.

Не ясно, что вы имеете в виду, когда говорите «любой селектор, который применяется», потому что при выполнении jQuery( elementArray ).

вы не используете селектор.можете фильтровать jQuery( elementArray ) с помощью jQuery( elementArray ).filter(selector), и элементы в массиве, которые не соответствуют селектору, будут затем удалены из объекта jQuery.

Или вы можете использовать .find() как в jQuery( elementArray ).find(selector).Это будет смотреть на потомков каждого элемента в elementArray для потомков, которые соответствуют селектору, и поместит всех найденных потомков в возвращенный новый объект jQuery.

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