2017-04-13 3 views
1

とトグルSVG:jQueryの.htmlを()私はクリック上の2つのSVGを切り替えしようとしている

$('.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>'); 

HTMLは次のとおりです。最初に

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

コンテンツISTは置き換えクリックして、 btn_back svgが正しく表示されます。私が.closeを2回クリックすると、svgは変更されません。

は、.html()ツールが間違っていますか?

ありがとうございました!

+0

お読みください[.click()](https://api.jquery.com/click/)および[.htmlの()](https://api.jquery.com/html/ )。あなたはあなたの質問を投稿する前にそれを済ませておくべきです。それが*「検索と研究」です。*は[ask]の意味です。 –

答えて

0

これは私がそれを行う方法です:

私はそれにクラスをトグルします。それに基づいて、私は文字列を比較するよりも速いHTMLを切り替えるでしょう。また、.html()は必ずしも文字列を返すとは限りませんので、あなたはこれよりずっと安全だと思います。おそらく完璧ではないかもしれませんが、あなたのアプローチより少し良いです。

$(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

ありがとうandrei! 貧弱な検索と調査のために申し訳ありませんが、私はsvgの代わりにtexでコードを使用しました。私はjqueryでうまくいきません。 –

+0

ごめんなさい、@PhilippWilhelmSchäferは何もありません。今日はいくつかのことを学ぶ機会がありましたので、感謝してください。そのうちの1つは、質問する前にあなたの質問を(再)検索することです。全体的に見ると、より良い質問をしてより良い回答を得ることができます。 –

関連する問題