J'ai un ensemble de DIV
imbriqués et j'ai besoin de trouver chaque boîte externe de la boîte intérieure. Selon jQuery API, la méthode closest()
obtient le premier élément ancêtre qui correspond au sélecteur. J'ai donc essayé ceci:Quel est le problème avec mon utilisation de closest()?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css"><!--
div{
margin: 1em;
padding: em;
border: 1px solid black;
}
--></style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript"><!--
jQuery(function($){
$(".direccion-html").closest("div").css({borderColor: "red"});
});
//--></script>
</head>
<body>
<div>
<div class="direccion-html">Foo</div>
</div>
<div>
<div class="direccion-html">Bar</div>
</div>
</body>
</html>
Cependant, mon plus proche() sélecteur est l'élément lui-même aller chercher, et non l'un de ses ancêtres. Qu'est-ce que je fais mal? Il doit être une erreur évidente, mais je ne peux pas le faire ...
Mise à jour:
J'ai composé ce de la réponse de Nick:
jQuery(function($){
$(".direccion-html").each(function(){
$(this).parents("div:first").css({borderColor: "red"});
});
});
Il n'y a pas besoin de '.each' :) cela fonctionnera sur plusieurs éléments comme est;) –
@Nick Craver, j'ai oublié de le dire dans l'exemple original mais j'ai plusieurs boîtes. Si je n'utilise pas chacun, il correspond au premier parent commun de toutes les boîtes plutôt qu'au parent de chaque boîte. –
@ Álvaro - Oh, d'accord, vous avez absolument raison: "d'abord" jette les choses un peu. J'ai ajouté une alternative pour cela sans '.each()', juste traverser vers '.parent()' avant d'utiliser '.closest()' :) –