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


112

Я просто дивився на плагін кнопки jQueryUI і помітив це

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

Я ніколи подібного не бачив. Це як декілька вибору в одному селекторі jQuery?

Відповіді:


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", називається множинним селектором , і там ви можете вказати будь-яку кількість селекторів для об'єднання в єдиний результат, просто розділивши їх комою.


Крутий ніколи цього не знав. Коли я хотів обмежитися, наприклад, сектором класів, щоб не шукати всю сторінку, я просто зробив щось на зразок $ ('# id .class')
chobo2

Це насправді назад від того, що ви могли б подумати, дивлячись на джерело. Я б очікував, що першим аргументом стане суперклас, а за ним підкласи, які звужують його. Ну добре.
light24bulbs

3
Чи швидше це для браузера, якщо я визначаю контекст?
Андрес СК
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.