2017-12-24 4 views
2

私はjqueryを使ってこのコードを書いています。これは私にとっては馴染みのある言語です。しかし、私は正常にjQueryを使用して、これをJavaScriptに変換することができませんでした。どんな助けでも大歓迎です!どうすればこの短い機能をJavaScriptで書くことができますか?

// Toggle Function 
$('.toggle').click(function(){ 
    // Switches the Icon 
    $(this).children('i').toggleClass('fa-pencil'); 
    // Switches the forms 
    $('.form').animate({ 
    height: "toggle", 
    'padding-top': 'toggle', 
    'padding-bottom': 'toggle', 
    opacity: "toggle" 
    }, "slow"); 
}); 

このコードは、ログインページのアイコンとフォームを切り替えました。

すべてのヒントは非常に参考になります。

+4

jQuery **は** JavaScriptです。私は人々がそれについて混乱する方法を知らないが、それは本当に一般的です。あなたが求めているのは、jQueryライブラリがサポートしているさまざまなサービスを、ブラウザAPIまたは別のライブラリを使用して実行する方法です。いくつかのサービスはブラウザAPIで簡単に複製できますが、( '.animate()'のような)いくつかのサービスはかなり容易ではありません。 – Pointy

+0

@Pointy誤解をおかけして申し訳ありませんが、これはブラウザで完璧に動作します。私の問題は、クロムエクステンションで使用すると、前後に切り替えることができないということです。そのjquery(私はJqueryがJavascriptであることを知っている)かもしれないし、私は完全に間違っているかもしれませんが、私は今何かを考え出す作業をしています。どんな助けでも大歓迎です – Binary111

+0

イベントハンドラバインディングのようなものは、ブラウザの '.addEventListener()' DOM APIを使って簡単に行えますが、アニメーションはほとんどすべてjQueryです。タイマーとキューイングロジックを含むかなり複雑なメカニズムです。 – Pointy

答えて

1

ここでは、ネイティブJavaScriptに変換します。 CSSの ".show"定義を提供し、CSSアニメーションをいくつか定義して、必要なアニメーションを取得する必要があります。

const toggleElement = document.querySelector('.toggle'); 

toggleElement.addEventListener('click', function() { 
    const icons = this.querySelectorAll('i'); 
    icons.forEach(iconElement => iconElement.classList.toggle('fa-pencil')); 

    const form = document.querySelector('.form'); 
    form.classList.toggle('show'); 
}, false); 
+1

これは私が必要としていたものです!ありがとう! – Binary111

関連する問題