Несколько параметров для селектора jQuery?

112

Я просто смотрел на плагин кнопки jQueryUI и заметил это

$("button, input:submit, a", ".demo").button();

Я никогда не видел ничего подобного. Это похоже на множественный выбор в одном селекторе jQuery?

chobo2
источник

Ответы:

172

Второй аргумент ( ".demo"в вашем примере) - это контекст , в основном ваш селектор ограничен соответствием только потомкам определенного контекста :

$(expr, context)

Это просто эквивалент использования findметода:

$(context).find(expr)

Взгляните на документацию функции jQuery :

Селектор Контекст

По умолчанию селекторы выполняют поиск в DOM, начиная с корня документа. Однако для поиска можно задать альтернативный контекст, используя необязательный второй параметр $()функции. Например, если в функции обратного вызова мы хотим выполнить поиск элемента, мы можем ограничить этот поиск:

$('div.foo').click(function() {
  $('span', this).addClass('bar');
  // it will find span elements that are
  // descendants of the clicked element (this)
});

Также обратите внимание, что публикуемый вами селектор "button, input:submit, a"называется Множественный селектор , и там вы можете указать любое количество селекторов для объединения в один результат, просто разделив их запятой.

CMS
источник
Крутой никогда этого не знал. Когда я хотел ограничить, например, сектор класса, чтобы он не выполнял поиск по всей странице, я просто сделал что-то вроде $ ('# id .class')
chobo2
Это действительно далеко от того, что вы могли подумать, глядя на источник. Я ожидал, что первым аргументом будет суперкласс, за которым следуют подклассы, которые сужают его. Ах хорошо.
light24bulbs 03
3
Будет ли быстрее для браузера, если я определю контекст?
Andres SK