Je suis en train de configurer un panneau rotatif, mais j'ai trois états: actif, inactif, désactivé.JQuery.Next() avec le sélecteur ne fonctionne pas comme prévu
Je souhaite uniquement effectuer une rotation entre les panneaux actifs et inactifs et ignorer les panneaux désactivés. S'il n'y a plus de panneaux inactifs, retournez au premier panneau. Toutefois, avec le code ci-dessous, cliquez sur le bouton pour sélectionner le panneau 1, puis sur le panneau 2 et sur le panneau 1, sans sélectionner le panneau 5. Si je supprime le sélecteur ci-dessous, cela fonctionne comme prévu. Je pense que c'est ma compréhension (ou son absence) de l'opérateur suivant. Des pensées?
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="http://code.jquery.com/jquery-1.7.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$("#rotate").click(function() {
var ActivePanel = $('.active'); //Get the current active panel
var NextPanel = $('.active').next('.inactive:not(.disabled)'); //Get the next panel to be active.
if (NextPanel.length == 0) NextPanel = $("#panel1"); //check for null next. if so, rotate back to the first panel
console.log("Active Panel: ", ActivePanel);
console.log("Next Panel: ", NextPanel);
$(ActivePanel).removeClass("active").addClass("inactive");
$(NextPanel).removeClass("inactive").addClass("active");
});
});
</script>
</head>
<body>
<button id="rotate">Rotate Active Panel</button>
<div id="panel1" class="active"><p>Some Content</p></div>
<div id="panel2" class="inactive"></div>
<div id="panel3" class="inactive disabled"></div>
<div id="panel4" class="inactive disabled"></div>
<div id="panel5" class="inactive"></div>
</body>
</html>
Cela fonctionne mais je ne comprends pas pourquoi cela ne fonctionne pas: var NextPanel = $ (". Active"). Siblings (". Inactive: not (.disabled): first") ; –
'.siblings()' prend tous ces éléments frères, avant ou après. C'est pourquoi les 1er éléments sélectionnent le 2ème élément et le 2ème élément sélectionne le 1er. – hunter
Oui, je vois maintenant. Merci de m'avoir appris le sélecteur '~'. 10 points pour Gryffondor. Pour ceux qui sont intéressés, la documentation est ici: http://api.jquery.com/next-siblings-selector/ –