Je développe une application avec javascript. Ce dont j'ai besoin, c'est d'avoir divs avec id (1,2,3 ...) et être capable d'insérer un div entre, par exemple, 2 et 3, avec jquery, et ensuite avoir ce soit le nouveau trois, et trois devient quatre, quatre devient cinq, etc. J'ai l'insertion div qui fonctionne, j'ai juste besoin de savoir comment réorganiser les divs. Des idées?Renuméroter les ID divisés numériquement en ajoutant un au milieu avec Javascript
Répondre
Après avoir inséré les nouvelles div, vous pouvez le faire:
var i = 1;
$('div').each(function() {
$(this).attr('id', i++);
});
Remplacer $ ('div') par votre propre sélection. N'oubliez pas que, selon la version de HTML que vous utilisez, les ID ne peuvent pas commencer par un nombre.
Est-ce que HTML5 assouplit les règles de valeur "id"? – Pointy
Oui. Ou du moins c'était une proposition pour HTML5: les id pourraient contenir n'importe quoi, donc même id = "+ * (*% *^{|' "serait valide. (Je ne sais toujours pas quoi penser :-) – edwin
vous pouvez également utiliser l'index donné par chaque() au lieu de maintenir un compteur. – tster
Je suis assez sûr que vous obtenez des choses dans l'ordre DOM à partir des sélecteurs jQuery, donc vous ne pouvez pas simplement trouver l'élément parent, sélectionnez les éléments <div>
enfant, puis .each()
à travers la liste?
Vous ne pouvez pas commencer ID avec une valeur numérique, mais peu importe ce que vous feriez quelque chose comme
// set a data value in the div you have just inserted into the dom and set a variable theID to the current ID you have just inserted.
$(this).data('inserted', true);
var theID = $(this).attr('id'); // this will be 3.
// now to update the other divs.
$('div').each(function() {
if($(this).attr('id') >= theID && !$(this).data('inserted')){
$(this).attr('id', $(this).attr('id') + 1);
}
});
// now set the data inserted to false for future updates
$('div#3').data('inserted', false);
$(function() {
reorder();
$('#click').click(function() {
$('<h2>hello world blah!</h2>').insertAfter('.content h2:eq(1)');
reorder();
});
});
function reorder() {
$('.content h2').each(function(i) {
$(this).attr('id', 'order_'+(i+1));
// alert(parseInt(this.id.split('_')[1])); // this is the id #
});
};
- 1. Les ID sont classés par ordre alphabétique au lieu de numériquement
- 2. étiquette en ajoutant de javascript
- 3. Parser JSON d'AJAX, un homme potentiel au milieu avec eval?
- 4. passant numériquement indexé tableau PHP à javascript
- 5. Application arrêtée au milieu
- 6. Comment renuméroter l'index primaire
- 7. regex remplacer au milieu
- 8. Retirer un enfant sans ID en JavaScript
- 9. Comment signer numériquement un PDF avec PHP
- 10. ajoutant UITabBarItems au UITabBar
- 11. JavaScript regex pour trouver mot au milieu de la chaîne
- 12. div divisés pour "javascript paresseux" loading? Sécurité possible/autres problèmes?
- 13. ASP.NET: ImageButton pas au milieu
- 14. Renuméroter une liste en utilisant jQuery
- 15. Comment signer numériquement un message avec M2Crypto en utilisant les clés dans un certificat au format DER
- 16. Position un UIView au milieu d'un UITableView avec cadre CGRectZero
- 17. Attacher deux objets NSString avec un espace au milieu?
- 18. l'image ne vient pas au milieu
- 19. Aligner un texte au milieu d'une image?
- 20. positionner une image au milieu
- 21. en ajoutant un tableau existant
- 22. Renuméroter la figure dans LaTeX?
- 23. Comment trier naturellement/numériquement un DataView?
- 24. Comment lancer flv au milieu?
- 25. En ajoutant un fichier XML?
- 26. Comment remplacer certains octets au milieu d'un fichier avec Python?
- 27. commandes de positionnement au milieu d'un CheckBox
- 28. Demander une confirmation au milieu d'un processus
- 29. Sélectionnez les résultats au milieu d'une liste triée?
- 30. échapper un dollar au milieu d'une propriété ant
Permettez-moi d'être le premier à noter que les valeurs « id » purement numériques ne sont pas valides . – Pointy
... à moins (peut-être) que vous utilisiez HTML5 :-) (Merci @ edwin!) – Pointy