Як я можу вибрати предмет із класом у межах DIV?


142

У мене є такий HTML:

<div id="mydiv">
  <div class="myclass"></div>
</div>

Я хочу мати можливість використовувати селектор, який вибирає внутрішню div, але специфічну для mydivконтейнера. Як я можу досягти цього за допомогою jQuery?

Відповіді:


285

Спробуйте:

$('#mydiv').find('.myclass');

JS Fiddle демо .

Або:

$('.myclass','#mydiv');

JS Fiddle демо .

Або:

$('#mydiv .myclass');

JS Fiddle демо .

Список літератури:


Добре вивчити find()документацію:

Методи .find () та .children () схожі, за винятком того, що останній рухається лише на одному рівні вниз по дереву DOM.


2
другий два не працюватимуть, але знайти Ок. Другі два виберуть кожен клас = myclass і виберуть кожен id = mydiv) я думаю.
— czupe

2
@czupe: ні, поки підхід до вибору контексту записується по-різному, реалізує jQuery, внутрішньо той самий $('#mydiv').find('.myclass');підхід, який використовується у першому фрагменті коду. Між іншим: "... вибрати кожного id=mydiv"? Там повинні тільки коли - або бути один використання заданого idна сторінці ( id повинен бути унікальним в межах документа ).
— Девід говорить про відновлення Моніки

@DavidThomas Ну я просто спробував $ ('# mydiv .myclass'); і в кінцевому підсумку було вибрано всі діви, які мають клас myclass, а не просто діви в mydiv.
— користувач3281466

@ user3281466: справді? Це здається малоймовірним, чи можете ви відтворити свою проблему ?
— Девід каже повернути Моніку

як вам перевірити що-небудь у
— діві,

20

Спробуйте це

$("#mydiv div.myclass")

Або якщо вам байдуже, чи це div(або якщо він завжди буде а div), ви можете спростити його до $ ("# mydiv .myclass").
— Майкл Міор

@Michael - Так, ми можемо просто сказати .mycalss, але якщо ми знаємо його div, div.myclass зробить пошук швидшим.
— ShankarSangoli

@Shankar, швидше за все, це не зробить це швидше, а повільніше. припускаючи, що jquery використовує sizzle, а не рідний, document.queryselectorallвін, ймовірно, шукатиме так само, і у вашому випадку здійснить додаткову перевірку. Можливо, що вродні реалізації роблять те саме.
— Давін

Деякі швидкі тести, які я провів, свідчать про те, що це залежить від браузера. Він відображався незначно швидше в Chrome і незначно повільніше у FF. У будь-якому випадку, якщо ви не використовуєте цей селектор багато разів або над великою кількістю елементів, різниця, ймовірно, незначна. Дивіться тут на мій сирий (і, можливо, хибний) тест.
— Майкл Міор

@Michael - Якщо ми вкажемо ім'я тега разом із назвою класу, воно спочатку використовуватиме getElementsByTagName, а потім шукатиме ім’я класу, яке визначається швидше, і все ж використовує нативний метод для сортування першого рівня. Завжди це мізерно, якщо не так багато елементів для вибору.
— ShankarSangoli

11

Ви зробите це так само, як застосуєте селектор css. Для миттєвості ви можете зробити

$("#mydiv > .myclass")

або

$("#mydiv .myclass")

Останній відповідає всім міккласам всередині myDiv, включаючи мікклас всередині myclass.


6

Якщо ви хочете вибрати кожен елемент, який має атрибут класу "myclass"

$('#mydiv .myclass');

Якщо ви хочете вибрати лише елементи div, які мають атрибут класу "myclass"

$("div#mydiv div.myclass");

дізнатися більше про JQuery селектори відносяться ці статті


1

спробуйте це замість цього $(".video-divs.focused"). Це працює, якщо ви шукаєте відеоролики, які зосереджені.

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