web-dev-qa-db-fra.com

jQuery - sélection d'éléments à l'intérieur d'un élément

disons que j'ai un balisage comme ceci:

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

et je veux choisir #moo.

pourquoi $('#foo').find('span') fonctionne, mais pas $('span', $('#foo'));?

81
Alex

Vous pouvez utiliser n'importe lequel de ceux-ci [à partir du plus rapide]

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

jetez un oeil

119
Jishnu A P

En fait, $ ('# id', this); sélectionnerait #id à n’importe quel niveau de descendant, pas seulement l’enfant immédiat. Essayez ceci à la place:

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

ou

$("#foo > #moo")

ou

$("#foo > span")
51
Pranay Rana

Pourquoi ne pas simplement utiliser:

$("#foo span")

ou

$("#foo > span")

$('span', $('#foo')); fonctionne bien sur ma machine;)

9
hunter

Regardez ici - pour interroger un sous-élément d'un élément:

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

6
Cody

Vous pouvez utiliser l’option find pour sélectionner un élément dans un autre. Par exemple, pour trouver un élément avec id txtName dans un div particulier, vous pouvez utiliser comme

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

.... mais $ ('span', $ ('# toto')); ne fonctionne pas?

Cette méthode est appelée comme fournissant contexte de sélecteur .

En cela, vous fournissez un deuxième argument au sélecteur jQuery . Ce peut être n'importe quelle chaîne d'objet css, comme vous le feriez avec une sélection directe ou un élément jQuery.

par exemple.

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

La ligne ci-dessus sélectionnera toutes les plages du conteneur ayant la classe nommée cont1.

DÉMO

2
Mohd Abdul Mujib

les deux semblent fonctionner.

voir le violon: http://jsfiddle.net/maniator/PSxkS/

1
Neal