2017-04-13 1 views
1

je suis en train de passer à deux svg clic:SVG Bascule avec jQuery .html()

$('.close').html() == '<svg class="btn_back"><use xlink:href="#btn_back"></use></svg>' ? $(this).html('<svg class="btn_i"><use xlink:href="#btn_i"></use></svg>') : $(this).html('<svg class="btn_back"><use xlink:href="#btn_back"></use></svg>'); 

le code html est:

<div class="back"><svg class="btn_i"><use xlink:href="#btn_i"></use></svg></div> 

le premier cliquez sur le ist contenu remplacé et le btn_back svg est montré correctement. quand je clique sur .close la seconde fois que le svg ne change pas.

est le .html() le mauvais outil?

merci pour toute aide!

+0

S'il vous plaît lire [.cliquez()] (https://api.jquery.com/click/) et [.html()] (https://api.jquery.com/html/). Vous auriez dû le faire avant de poster votre question. C'est ce que * "Recherche et recherche." * Signifie dans [demander]. –

Répondre

0

Voilà comment je le ferais:

Je bascule une classe sur elle. Sur cette base, je passerais HTML, ce qui est plus rapide que de faire une comparaison de chaînes. En outre, .html() ne renvoie pas toujours une chaîne, donc je pense que vous êtes beaucoup plus en sécurité comme ça. Probablement pas parfait, mais un peu mieux que votre approche.

$(document).on('click','.close', function(e){ 
    var close = $(e.target).closest('.close'); 
    close.toggleClass('on'); 
    close.html(close.hasClass('on') ? 
    '<svg class="btn_i"><use xlink:href="#btn_i"></use></svg>', 
    '<svg class="btn_back"><use xlink:href="#btn_back"></use></svg>' 
    ); 
}) 
+0

merci andrei! désolé pour la recherche et la recherche pauvres, mais quand j'ai utilisé le code avec tex à la place du svg cela a fonctionné. et je ne suis pas très bon en jquery. –

+0

Il n'y a pas de quoi être désolé, @ PhilippWilhelmSchäfer. Vous avez eu l'occasion d'apprendre quelques choses aujourd'hui, alors vous devriez être reconnaissant. L'un d'eux est de (re) rechercher vos questions avant de demander. Dans l'ensemble, cela vous permettra de poser de meilleures questions et de recevoir de meilleures réponses. –