Réponses:
Pourquoi ne pas parcourir la page (courte) des sélecteurs en premier?
Le voici: l' :eq()
opérateur. Il est utilisé comme get()
, mais il renvoie l'objet jQuery.
Ou vous pouvez également utiliser la .eq()
fonction.
.eq()
est plus approprié pour la question du PO. :eq()
est utilisé dans le paramètre de chaîne to $
, alors qu'il .eq()
s'agit d'une méthode sur un objet jQuery existant.
$('select').find('option').eq(n)
ignorera essentiellement le regroupement et obtiendra toutes les options dans leur ensemble. Si vous le voulez par groupe, quelque chose comme ça est nécessaire:$('select').find('optgroup').each(function() { $(this).find('option').eq(n)...; })
Vous pouvez utiliser le sélecteur : eq , par exemple:
$("td:eq(2)").css("color", "red"); // gets the third td element
Ou la fonction eq (int) :
$("td").eq(2).css("color", "red");
N'oubliez pas non plus que les index sont basés sur zéro.
:nth()
sélecteur - à ne pas confondre avec:nth-child()
si vous avez le contrôle sur la requête qui construit l'objet jQuery, utilisez :eq()
$("div:eq(2)")
Si vous n'avez pas de contrôle dessus (par exemple, il est transmis depuis une autre fonction ou quelque chose), utilisez .eq()
var $thirdElement = $jqObj.eq(2);
Ou si vous voulez une section d'entre eux (par exemple, les troisième, quatrième et cinquième éléments), utilisez .slice()
var $third4th5thElements = $jqObj.slice(2, 5);
.eq()
au lieu de :eq()
réellement. Légère amélioration des performances.
.eq () -Un entier indiquant la position 0 de l'élément.
Ex:
Considérez une page avec une simple liste:
<ul>
<li>list item 1</li>
<li>list item 2</li>
<li>list item 3</li>
<li>list item 4</li>
</ul>
Nous pouvons appliquer cette méthode à l'ensemble des éléments de la liste:
$( "li" ).eq( 2 ).css( "background-color", "red" );
Si vous avez déjà l'objet jquery dans une variable, vous pouvez également le traiter comme un tableau indexé normal, sans utiliser jquery:
var all_rows = $("tr");
for(var i=0; i < all_rows.length; i++){
var row = all_rows[i];
//additionally, you can use it again in a jquery selector
$(row).css("background-color","black");
}
Bien que l'exemple ci-dessus ne soit d'aucune façon utile, il représente la façon dont vous pouvez traiter les objets créés par jquery comme des tableaux indexés.
<select>
éléments et que vous voulez l'élément combobox sélectionné, utilisez$(row).val();
Si je comprends bien votre question, vous pouvez toujours envelopper la fonction get comme ceci:
var $someJqueryEl = $($('.myJqueryEls').get(3));
eq()
vous donne gratuitement.
Si vous voulez récupérer un élément / nœud ou une étiquette en boucle, par exemple
<p class="weekday" data-today="monday">Monday</p>
<p class="weekday" data-today="tuesday">Tuesday</p>
<p class="weekday" data-today="wednesday">Wednesday</p>
<p class="weekday" data-today="thursday">Thursday</p>
Donc, à partir de la boucle de code ci-dessus est exécutée et nous voulons sélectionner un champ particulier pour cela, nous devons utiliser la sélection jQuery qui ne peut sélectionner que l'élément attendu de la boucle ci-dessus, donc le code sera
$('.weekdays:eq(n)');
par exemple
$('.weekdays:eq(0)');
ainsi que par une autre méthode
$('.weekday').find('p').first('.weekdays').next()/last()/prev();
mais la première méthode est plus efficace lorsqu'elle HTML <tag>
a un nom de classe unique.
REMARQUE: la deuxième méthode est utilisée quand il n'y a pas de nom de classe dans l'élément ou le nœud cible.
pour plus, suivez https://api.jquery.com/eq/
Pour les itérations, l'utilisation d'un sélecteur ne semble pas avoir de sens cependant:
var some = $( '...' );
for( i = some.length -1; i>=0; --i )
{
// Have to transform in a jquery object again:
//
var item = $( some[ i ] );
// use item at will
// ...
}
<html>
<head></head>
<body>
<script type="text/javascript"
src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('li:eq(1)').hide();
});
</script>
<ol>
<li>First</li>
<li>Second</li>
<li>Third</li>
</ol>
</body>
</html>
Lorsqu'il s'exécute, deux éléments de la liste ordonnée s'affichent, Premier et Troisième. Le second était caché.
$(function(){
$(document).find('div').siblings().each(function(){
var obj = $(this);
obj.find('div').each(function(){
var obj1 = $(this);
if(!obj1.children().length > 0){
alert(obj1.html());
}
});
});
});
<div id="2">
<div>
<div>
<div>XYZ Pvt. Ltd.</div>
</div>
</div>
</div>
<div id="3">
<div>
<div>
<div>ABC Pvt Ltd.</div>
</div>
</div>
</div>
.eq()
place de:eq()
?