Есть ли способ сделать add () в области видимости в jQuery? - PullRequest
1 голос
/ 09 декабря 2008

Основной метод jQuery принимает второй необязательный аргумент, чтобы обеспечить контекст для поиска. например,

$(".setA", ancestorOfSetsA);

Однако метод jQuery add() не принимает этот аргумент контекста. То, что я пытаюсь сделать, это:

$(".setA", ancestorOfSetsA).add(".setB", ancestorOfSetsB);

Я пытаюсь сделать это через плагин, который будет перегружать метод add(), но я не могу понять, как объединить два объекта jQuery в один объект jQuery.

Я бы хотел найти способ сделать scoped add() с помощью jQuery, но если мне это не удастся, я сам напишу, если найду способ слияния с объектами jQuery.

1 Ответ

2 голосов
/ 09 декабря 2008

Вы можете передать коллекцию jQuery в add так же, как строку селектора:

$(".setA", ancestorOfSetsA).add( $(".setB", ancestorOfSetsB) );

Если вы хотите перегрузить add, вам нужно быть осторожным, чтобы поддерживать все его поведение. Кто-то (плагин, который вы можете использовать) может сделать это:

$( selector ).add('<div>new element</div>').appendTo( somethere );

Изменено:

Вот текущая функция добавления из jQuery, модифицированная для получения параметра контекста:

jQuery.fn.add = function( selector, context ) {
    return this.pushStack( jQuery.unique( jQuery.merge(
        this.get(),
        typeof selector == 'string' ?
            jQuery( selector, context ) :
            jQuery.makeArray( selector )
    )));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...