Подтвердить что ты не робот

Несколько цепочек селекторов в jQuery?

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

Однако у меня есть частичный вид с кодом в нем. Этот частичный вид (общий код) обернут вокруг тега формы.

У меня есть:

<form id="Create">
// load common code in from partial view
</form>

<form id="Edit">
// load common code in from partial view
</form>

Теперь в этом общем коде мне нужно прикрепить плагин к нескольким полям, чтобы я сделал

$('#Create .myClass').plugin({ options here});

$('#Edit .myClass').plugin({options here});

Так что это почти тот же код. Мне интересно, есть ли способ заставить его искать любой из идентификаторов?

Edit

У меня возникают проблемы с ним, когда у меня есть переменные для моих селекторов

    my.selectors = 
    {
        A: '#Create',
        B: '#Edit',
        Plugin: ' .Plugin' 
    };

 $(selector.A+ selectors.Plugin, selector.B+ selectors.Plugin)

Кажется, что не работает.

4b9b3361

Ответ 1

Вы можете комбинировать несколько селекторов с запятой:

$('#Create .myClass,#Edit .myClass').plugin({options here});

Или, если у вас будет куча, вы можете добавить класс ко всем своим элементам формы и затем выполнить поиск в этом классе. Это не дает вам предполагаемую экономию времени на ограничение поиска, но я, честно говоря, не стал бы слишком беспокоиться об этом, если бы был вами. Браузеры делают много причудливых вещей, чтобы оптимизировать общие операции за спиной - простой селектор классов может быть быстрее.

Ответ 2

$("#Create").find(".myClass").add("#Edit .myClass").plugin({});

Используйте $.fn.add, чтобы объединить два набора.

Ответ 4

Я думаю, что вы можете увидеть немного лучшую производительность, сделав так:

$("#Create, #Edit").find(".myClass").plugin(){
    // Options
});

Ответ 5

как:

$('#Create .myClass, #Edit .myClass').plugin({ 
    options: here
});

Вы можете указать любое количество селекторы объединяются в один результат. Это множественное выражение комбинатор - эффективный способ выберите разрозненные элементы. Приказ элементов DOM в возвращаемом Объект jQuery может быть не таким, как они будут в порядке документа. альтернативой этому комбинатору является .add().

Ответ 6

Здесь уже есть очень хорошие ответы, но в некоторых других случаях (не в частности) использование карты может быть "единственным" решением.

Специально, когда мы хотим использовать регулярные выражения, отличные от стандартных.

В этом случае это будет выглядеть так:

 $('.myClass').filter(function(index, elem) {
    var jElem = $(elem);

    return jElem.closest('#Create').length > 0 || 
           jElem.closest('#Edit').length > 0;

}).plugin(...);

Как я уже говорил, здесь это решение может быть бесполезным, но для дальнейших проблем это очень хороший вариант