le MEMO du WEB développeur
••• JQuery •••  Liste des Mémos, astuces et bonnes pratiques

Rajouter un élément dans le DOM

JQuery permet de rajouter à la volée des événements dans le DOM.

Ici l'on créé un nouvel élément DIV dans le DOM (qui n'existe pas dans le document HTML de départ)

var new_element = jQuery('<div id="new_elt">?</div>');
// On ajoute du style avec la fonction .css()
new_element.css({
    background: 'gray',
    width     : '50px',
    height    : '30px',
    padding   : '3px'
}); 

Pour le moment, notre élément new_element  existe, il est stocké dans la mémoire, mais il n'est pas encore affiché à l'écran.

Pour l'insérer dans le DOM, il faut ajouter ce nouvel élément new_element à l'intérieur d'un élément existant dans le document HTML avec les méthode JQuery append() ou prepend()

$('body').append(new_element);

Ici on a ajouté notre nouvel élément div new_element à la fin du body du document HTML (pour l'insérer au début, on aurait utilisé la méthode prepend())

source : http://www.finalclap.com/tuto/cours-jquery-61/manipuler-dom-66/

Avertissement :

le nouvel élément rajouté ainsi dans le DOM ne répondra pas aux évenements associés à sa classe ou à son sélecteur !!

Par exemple, le div précédemment ajouté dans le DOM, d'identifiant id="new_elt" ne répondra pas à l'événement suivant :

$("#new_elt").click (function () { alert ('cette alerte ne sera jamais déclenchée...'); });

Pour pouvoir agir sur l'évenement click du div #new_elt inséré dans le DOM,  il faut obligatoirement faire appel à la fonction JQuery live()

live() permet d'associer un événement à un élément qui n'existe pas encore au moment de l'affichage

 $("#monDiv").live("click", function(){
         alert ('hourra, j\'ai cliqué sur new_element');
 });
 
Avertissement
La méthode live() est dépréciée depuis jQuery 1.7, il est conseillé de la remplacer par delegate() ou on(). Des explications claires sur ce blog
 
 
publié le 14/12/2011 par Memo Web
Commenter le Mémo :

DatePicker de JQuery : Déployer le calendrier à l'ouverture de la page
JQuery - Queue() : Attendre qu'une animation se termine avant de commencer la suivante
$("#calendar").fullCalendar is not a function
Siblings() Parcours des frères immédiats d'un élément
Lecture seule d'un textarea en JQuery
Ajouter un masque de saisie dans un champs input text
Sélecteurs RegExp et JQuery
Problème(ou pas):JQuery ferme automatiquement les balises HTML
Parcourir tous les éléments d'une classe en JQuery
Not(expr) Element d'exclusion en Jquery
Ajoutez vos propres Mémos sur MEMO-WEB

Il suffit de vous créer un compte sur le site

Vous pourrez choisir un thème parmis l'une des catégories proposées par MEMO-WEB.

Rédigez votre Mémo.
Après validation par MEMO-WEB, il sera mis en ligne.
Ajouter vos Mémos