jQuery - вибір елементів всередині елемента


94

припустимо, у мене така розмітка:

<div id="foo">
  ...
  <span id="moo">
    ...
  </span>
  ...
</div>

і я хочу вибрати #moo.

чому $('#foo').find('span')працює, а $('span', $('#foo'));ні?


10
Чому ні $('#moo')? ;) До речі. це працює: jsfiddle.net/fkling/k5X2r
Фелікс Клінг,

Я не знаю, чому, але функція, яку я підключаю до вибраного інтервалу, застосовується до всіх інтервалів сторінки, а не лише до тієї, що знаходиться всередині #foo :(
Олексій,

2
А як щодо того, коли у вас вже є елемент, вибраний у var, так, наприклад, ви починаєте з var ele = $("div #foo")того, як ви можете дістатись до му звідси (без використання посилань на масив)
Worthy7

Відповіді:


129

Ви можете використовувати будь-який із них [починаючи з найшвидшого]

$("#moo") > $("#foo #moo") > $("div#foo span#moo") > $("#foo span") > $("#foo > #moo")

Поглянь


1
Я думаю, що третій повинен бути span # moo not span # foo?
xr280xr

60

Власне, $ ('# id', this); вибрав би #id на будь-якому рівні нащадка, а не лише безпосередньої дитини. Спробуйте замість цього:

$(this).children('#id');

або

$("#foo > #moo")

або

$("#foo > span")

Це нічого не виділить, оскільки елемент має ідентифікатор moo , а не клас.
Фелікс Клінг,

3
Варто відзначити , що .children()і .find()схожі хіба що колишні подорожі тільки один рівень вниз по DOM поддереве.
Кевін

Це добре працює, дякую ;-)
Алі Лашині

9

Чому б просто не використовувати:

$("#foo span")

або

$("#foo > span")

$('span', $('#foo')); чудово працює на моїй машині;)


$($(elementA), 'tr#' + key + ' span')у мене не працює (jQuery 1.10.2)
Коді

8

Ви можете використовувати findопцію, щоб вибрати елемент всередині іншого. Наприклад, щоб знайти елемент з ідентифікатором txtName у певному div, ви можете використовувати like

var name = $('#div1').find('#txtName').val();

6

Подивіться тут - щоб запитати піделемент елемента :

$(document.getElementById('parentid')).find('div#' + divID + ' span.child');


3

.... але $ ('span', $ ('# foo')); не працює?

Цей метод називається забезпеченням контексту селектора .

У цьому ви надаєте другий аргумент селектору jQuery . Це може бути будь-який рядок об'єкта css, як і ви, що передаєте для прямого виділення, або елемент jQuery.

напр.

$("span",".cont1").css("background", '#F00');

У наведеному вище рядку буде виділено всі інтервали в контейнері, що має клас із іменем cont1.

ДЕМО


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