Яка мета провідної двокрапки у селекторі jQuery?


84

Я почав використовувати інструментарій Wijmo і на своїх сторінках документації натрапив на чимало подібних селекторів, подібних до цього:

$(":input[type='radio']").wijradio();

Я б написав свій так:

$('input[type=radio]').wijradio();

Чи роблять вони те саме, чи щось мені не вистачає?

Зверніть увагу, що вище є дві різниці: перший селектор має префікс із двокрапкою та містить лапки для типу вводу.


4
Один - спеціалізований :inputселектор, а інший - загальний Elementселектор.
mellamokb

Відповіді:


85

:inputє розширенням jQuery, а inputє селектором CSS.

textarea, button, І selectелементи будуть узгоджені з першої, але не останньою.

Останнє швидше, тому використовуйте його для свого конкретного radioприкладу. Використовуйте, :inputколи потрібно "всі елементи форми", навіть якщо вони не є строго <input>тегами. Навіть у цьому випадку рекомендується спочатку використовувати стандартний селектор CSS, а потім використовувати .filter(':input')на цьому наборі.

Оскільки: input - це розширення jQuery, а не частина специфікації CSS, запити, що використовують: input, не можуть скористатися перевагами підвищення продуктивності, передбаченими власним методом DOM querySelectorAll (). Для досягнення найкращої продуктивності при використанні: input для виділення елементів, спочатку виберіть елементи за допомогою чистого селектора CSS, а потім використовуйте .filter (": input").

У джерелі 1.7.2 фільтр: input перевіряє регулярний вираз щодо nodeName:

input: function( elem ) {
            return (/input|select|textarea|button/i).test( elem.nodeName );
},

Це має сенс, дякую! А котирування типів зовсім необов’язкові?
Мортен Мертнер,

1
Чесно кажучи, я ніколи не використовував [type=]з , :inputтому що , якщо я шукаю типу конкретного, з використанням , :inputщоб отримати всі з них перший , здається , довгий шлях. Для чистих селекторів CSS я розумію, що лапки є стандартними, але браузери прощають. Ви можете швидко протестувати це за допомогою / без тут reference.sitepoint.com/css/css3attributeselectors/demo
David Ruttka

тож $ (": перевірено") дає позначені прапорці .. це також розширення jquery?
Vishal Sharma

@David Ruttka: "браузери прощають" стосується лише HTML та CSS у химерному режимі. Це твердження не стосується CSS у стандартному режимі. У деяких випадках цитати можуть бути опущені юридично.
BoltClock

ми можемо мати приклад first select the elements using a pure CSS selector, then use .filter(":input").?
Poutrathor

17

$("input")селектор буде вибирати тільки елементи введення типу

в той час як $(":input")селектор вловлює всі елементи введення (наприклад, текстове поле, виділення, введення тощо ...)

для отримання додаткової інформації перейдіть в офіційну документацію jQuery про :inputселектор за адресою:

http://api.jquery.com/input-selector/


6

:inputСелектор в основному вибирає все formелементи управління (введення, виберіть текстове поле, і кнопки елементів) , де , як inputвибирає селекторних всі елементи на ім'я тега input.

Оскільки перемикач є formелементом, а також він використовує inputтег, тому обидва вони можуть бути використані для вибору перемикача. Однак обидва підходи відрізняються способом знаходження елементів і, отже, кожен має різні переваги в роботі.

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