Découvrez notre magazine 2026

E-Shop
logo messika

Messika

C’est la personnalité de sa créatrice, Valérie Messika, qui inspire chaque pièce de la collection de cette marque fondée en 2005.

Ses bijoux sont modernes, élégants, minimalistes et sophistiqués à la fois. Move, Skinny, Glam’Azone, sont quelques-unes des lignes phares de la maison Messika.

document.addEventListener('DOMContentLoaded', function() { makeCollapsible(); // Gestion des popups Elementor (lorsqu'elles s'ouvrent) jQuery(document).on('elementor/popup/show', function(event, id, instance) { if (id) { makeCollapsible(); } }); // Nettoyage des filtres vides et inutiles cleanFilters(); }); // Écouteur d'événement alternatif pour les popups Elementor window.addEventListener('elementor/popup/show', function(event, id, instance) { if (id) { makeCollapsible(); } }); /** * Fonction pour rendre les filtres pliables/dépliables */ function makeCollapsible() { jQuery(function($) { // Pour les checkboxes - masque les listes de cases à cocher non-appliquées avec animation $('.jet-checkboxes-list:not(.collapsible-applied)').slice(0).slideUp( 500, function() { $(this).addClass('collapsible-applied'); } ); // Pour le filtre range - masque les curseurs de plage non-appliqués avec animation $('.jet-range:not(.collapsible-applied)').slice(0).slideUp( 500, function() { $(this).addClass('collapsible-applied'); } ); // Gestionnaire de clic sur les labels de filtre $('.jet-filter-label').off('click').on('click', function(e) { e.stopPropagation(); // Empêche la propagation de l'événement var $clickedLabel = $(this); var $nextElement = $clickedLabel.next(); // Ferme tous les autres filtres ouverts $('.jet-filter-label').not($clickedLabel).each(function() { var $otherLabel = $(this); var $otherContent = $otherLabel.next(); if ($otherContent.is(':visible')) { $otherContent.slideUp(); $otherLabel.removeClass('noicon'); } }); // Bascule l'état du filtre cliqué (ouvert/fermé) $nextElement.slideToggle(); $clickedLabel.toggleClass('noicon'); }); // Ferme les filtres lorsqu'on clique en dehors $(document).on('click', function(e) { if (!$(e.target).closest('.jet-filter').length) { $('.jet-checkboxes-list:visible, .jet-range:visible').slideUp(); $('.jet-filter-label.noicon').removeClass('noicon'); } }); }); } /** * Fonction pour supprimer les filtres vides et inutiles * Utilise jQuery pour s'assurer de la compatibilité et de la précision */ function cleanFilters() { jQuery(function($) { // Logs pour le débogage console.log('Début du nettoyage des filtres'); // Traiter chaque filtre dans le groupe de filtres $('.jet-filters-group .jet-filter').each(function() { var $filter = $(this); var $label = $filter.find('.jet-filter-label'); var filterName = $label.text().trim(); // Cas 1: Filtre qui n'a qu'un label (sans contenu) if ($filter.children().length === 1 && $filter.children().first().hasClass('jet-filter-label')) { console.log('Suppression du filtre vide:', filterName); $filter.remove(); return; // Passe au filtre suivant } // Cas 2: Filtres avec une seule option ou options déjà sélectionnées sans alternatives var $visibleRows = $filter.find('.jet-checkboxes-list__row:not(.jet-filter-row-hide)'); var $checkedInputs = $filter.find('.jet-checkboxes-list__input:checked'); var $uncheckableRows = $filter.find('.jet-checkboxes-list__row:not(.jet-filter-row-hide):not(:has(.jet-checkboxes-list__input:checked))'); // Si nous avons exactement une option cochée et aucune autre option visible non cochée if ($checkedInputs.length === 1 && $uncheckableRows.length === 0) { console.log('Suppression du filtre avec une seule option cochée:', filterName); $filter.remove(); return; } // Si nous avons exactement une option visible au total if ($visibleRows.length === 1) { console.log('Suppression du filtre avec une seule option visible:', filterName); $filter.remove(); return; } }); console.log('Fin du nettoyage des filtres'); }); // Observer les changements dans le DOM pour détecter de nouveaux filtres setupMutationObserver(); } /** * Configure un observateur de mutations pour détecter les nouveaux filtres * ajoutés au DOM après le chargement initial */ function setupMutationObserver() { jQuery(function($) { // Fonction pour nettoyer à nouveau les filtres const reCheckFilters = function() { $('.jet-filters-group .jet-filter').each(function() { var $filter = $(this); // Cas 1: Filtre qui n'a qu'un label (sans contenu) if ($filter.children().length === 1 && $filter.children().first().hasClass('jet-filter-label')) { $filter.remove(); return; } // Cas 2: Filtres avec une seule option ou options déjà sélectionnées sans alternatives var $visibleRows = $filter.find('.jet-checkboxes-list__row:not(.jet-filter-row-hide)'); var $checkedInputs = $filter.find('.jet-checkboxes-list__input:checked'); var $uncheckableRows = $filter.find('.jet-checkboxes-list__row:not(.jet-filter-row-hide):not(:has(.jet-checkboxes-list__input:checked))'); // Si nous avons exactement une option cochée et aucune autre option visible non cochée if ($checkedInputs.length === 1 && $uncheckableRows.length === 0) { $filter.remove(); return; } // Si nous avons exactement une option visible au total if ($visibleRows.length === 1) { $filter.remove(); return; } }); }; // Créer un observateur MutationObserver if (window.MutationObserver) { const observer = new MutationObserver(function(mutations) { let shouldRecheckFilters = false; mutations.forEach(function(mutation) { if (mutation.addedNodes.length > 0) { for (let i = 0; i < mutation.addedNodes.length; i++) { const node = mutation.addedNodes[i]; if (node.nodeType === 1 && ( (node.classList && (node.classList.contains('jet-filter') || node.classList.contains('jet-filters-group'))) || $(node).find('.jet-filter, .jet-filters-group').length )) { shouldRecheckFilters = true; break; } } } }); if (shouldRecheckFilters) { // Attendre un court instant pour que tous les filtres soient correctement rendus setTimeout(reCheckFilters, 150); } }); // Configurer l'observer observer.observe(document.body, { childList: true, subtree: true }); } }); }
Filtrer par
Catégories
Catégories
Genre
Genre
Métal
Métal
Disponibilité
Disponibilité
Prix
Prix - slider
Prix - inputs

1 880

En stock

3 350

En stock

2 480

En stock

4 990

En stock

1 980

En stock

3 850

En stock

4 650

En stock

3 480

En stock

7 250

En stock

4 650

En stock

3 080

En stock

3 480

En stock

2 680

En stock

4 150

En stock

2 850

En stock

1 620

En stock

2 790

En stock

2 690

En stock

3 290

En stock

2 250

En stock

8 600

En stock

1 550

En stock

3 250

En stock

4 350

En stock

2 650

En stock

Paiement sécurisé

Vos paiements sont effectués en toute sécurité, pour une expérience d’achat simple et sereine.

Satisfait ou remboursé

Parce que votre satisfaction nous tient à cœur, vous disposez de 14 jours pour retourner votre commande en toute simplicité.

Authenticité garantie

Chaque création est soigneusement sélectionnée pour son authenticité, son origine et la qualité de son savoir-faire.

Expédition sous 72h

Vos commandes sont préparées avec soin et expédiées sous 72h.

Rechercher